基于tao框架的c# opengl开发遇到一个简单的问题
想使用Devil来载入纹理,编写了一个实验代码
绘制代码为
private void Form1_Load(object sender, EventArgs e)
{
simpleOpenGlControl1.InitializeContexts();
simpleOpenGlControl1.SwapBuffers();
Il.ilInit();
Ilu.iluInit();
Ilut.ilutInit();
Ilut.ilutRenderer(Ilut.ILUT_OPENGL);
simpleOpenGlControl1.SizeChanged += new EventHandler(simpleOpenGlControl1_SizeChanged);
// _textureManager.LoadTexture("map", "ccd-bkg.jpg");
// Texture texture = _textureManager.Get("map");
//Gl.glEnable(Gl.GL_TEXTURE_2D);
//Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture.Id);
PlotGL();
}
private void PlotGL()
{
Gl.glColor4f(1.0f, 1.0f, 1.0f, 0.1f);
Gl.glBegin(Gl.GL_QUADS);
Gl.glVertex3f(0, 0, 0);
Gl.glVertex3f(0.2f, 0, 0);
Gl.glVertex3f(0.8f, 0.6f, 0);
Gl.glVertex3f(0, 1, 0);
Gl.glEnd();
}
如果红色那行代码注释掉,绘制没有问题,都是白色的四边形
但一旦载入纹理后,四边形变成褐色了,不知为什么
public void LoadTexture(string textureId, string path)
{
int devilId = 0;
Il.ilGenImages(1, out devilId);
Il.ilBindImage(devilId); // set as the active texture.
if (!Il.ilLoadImage(path))
{
System.Diagnostics.Debug.Assert(false,
"Could not open file, [" + path + "].");
}
Ilu.iluFlipImage();
int width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH);
int height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT);
int openGLId = Ilut.ilutGLBindTexImage();
System.Diagnostics.Debug.Assert(openGLId != 0);
Il.ilDeleteImages(1, ref devilId);
_textureDatabase.Add(textureId, new Texture(openGLId, width, height));
}
绘制代码为
private void Form1_Load(object sender, EventArgs e)
{
simpleOpenGlControl1.InitializeContexts();
simpleOpenGlControl1.SwapBuffers();
Il.ilInit();
Ilu.iluInit();
Ilut.ilutInit();
Ilut.ilutRenderer(Ilut.ILUT_OPENGL);
simpleOpenGlControl1.SizeChanged += new EventHandler(simpleOpenGlControl1_SizeChanged);
// _textureManager.LoadTexture("map", "ccd-bkg.jpg");
// Texture texture = _textureManager.Get("map");
//Gl.glEnable(Gl.GL_TEXTURE_2D);
//Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture.Id);
PlotGL();
}
private void PlotGL()
{
Gl.glColor4f(1.0f, 1.0f, 1.0f, 0.1f);
Gl.glBegin(Gl.GL_QUADS);
Gl.glVertex3f(0, 0, 0);
Gl.glVertex3f(0.2f, 0, 0);
Gl.glVertex3f(0.8f, 0.6f, 0);
Gl.glVertex3f(0, 1, 0);
Gl.glEnd();
}
如果红色那行代码注释掉,绘制没有问题,都是白色的四边形
但一旦载入纹理后,四边形变成褐色了,不知为什么
public void LoadTexture(string textureId, string path)
{
int devilId = 0;
Il.ilGenImages(1, out devilId);
Il.ilBindImage(devilId); // set as the active texture.
if (!Il.ilLoadImage(path))
{
System.Diagnostics.Debug.Assert(false,
"Could not open file, [" + path + "].");
}
Ilu.iluFlipImage();
int width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH);
int height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT);
int openGLId = Ilut.ilutGLBindTexImage();
System.Diagnostics.Debug.Assert(openGLId != 0);
Il.ilDeleteImages(1, ref devilId);
_textureDatabase.Add(textureId, new Texture(openGLId, width, height));
}
...全文
相关推荐
Tao OpenGL Arcball 算法
tao opengl 写的Arcball算法,能够控制图像的旋转、平移、缩放。希望对大家有所帮助。
基于C#的OpenGL图形编程实战:Tao库封装完整项目
简介:OpenGL是用于开发2D/3D图形应用的跨平台API,而Tao库为.NET开发者提供了对OpenGL、OpenAL、OpenCL等原生库的高效封装,实现C#与底层图形接口的无缝交互。本完整C#项目已集成Tao库,支持在Visual Studio 2010中直接编译运行,省去环境配置成本,适合初学者学习和快速原型开发。通过该项目,开发者可掌握OpenGL核心概念、图形管线流程、资源管理机制以及C#环境下OpenGL上下文的创建与渲染技术,全面提升图形编程实践能力。
利用Tao和C#实现OpenGL 3D导航的完整指南
Tao库是一个开源的库,为.NET环境提供了一个简化OpenGL使用的接口。要开始使用Tao库,首先需要从其官方网站或源代码管理库中获取资源。通常,Tao库会与一些模板项目一起提供,这些项目已经配置好了所有必要的设置,可以直接用于开发。项目中包含了Tao.OpenGL.dll、Tao.FreeGLUT.dll等核心库,以及其他与图形、窗口和输入相关的扩展库。这些资源对于快速启动和运行OpenGL项目至关重要。
基于Tao框架下的OpenGL开发程序
该程序是在C#环境下进行的三维展示的开发.适合初学者.包含了三维地表的生成,移动,旋转,透视,坐标点变换,模式变换等内容.请下载后重新加载tao.OpenGl,Tao.Winform等组件文件内包含
基于Tao框架的C#+OpenGL
利用C#+OpenGL绘制基础的矩形图



