0
我正在使用Tao Framework与OpenGl一起工作。我试图加载纹理并在窗体上显示它。图像似乎加载正确(纹理ID生成,没有错误发生),但它没有正确显示。显示纹理的麻烦Tao-framework/OpenGl
这里是我的装载质地
public static class TextureManager
{
static TextureManager()
{
Il.ilInit();
Il.ilEnable(Il.IL_ORIGIN_SET);
}
public static int LoadTexture(string url)
{
int texObject = -1;
int imageId;
Il.ilGenImages(1, out imageId);
Il.ilBindImage(imageId);
if (Il.ilLoadImage(url))
{
int width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH);
int height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT);
Gl.glGenTextures(1, out texObject);
Gl.glPixelStorei(Gl.GL_UNPACK_ALIGNMENT, 1);
Gl.glBindTexture(Gl.GL_TEXTURE_2D, texObject);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_REPEAT);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_REPEAT);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
Gl.glTexEnvf(Gl.GL_TEXTURE_ENV, Gl.GL_TEXTURE_ENV_MODE, Gl.GL_REPLACE);
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGB, width, height, 0, Gl.GL_RGB, Gl.GL_UNSIGNED_BYTE, Il.ilGetData());
Il.ilDeleteImages(1, ref imageId);
}
return texObject;
}
}
和代码代码绘制它:
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glClearColor(255, 255, 255, 1);
Gl.glLoadIdentity();
Gl.glEnable(Gl.GL_TEXTURE_2D);
Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject);
Gl.glPushMatrix();
Gl.glTranslated(0, -1, -10);
Gl.glRotated(rot, 0, 1, 0);
Gl.glBegin(Gl.GL_QUADS);
Gl.glNormal3f(0, 0, 1);
Gl.glTexCoord2f(0, 0); Gl.glVertex3d(0, 0, 0);
Gl.glTexCoord2f(1, 0); Gl.glVertex3d(1, 0, 0);
Gl.glTexCoord2f(1, 1); Gl.glVertex3d(1, 1, 0);
Gl.glTexCoord2f(0, 1); Gl.glVertex3d(0, 1, 0);
Gl.glEnd();
Gl.glPopMatrix();
Gl.glDisable(Gl.GL_TEXTURE_2D);
AnT.Invalidate();
形式仅仅是空白的。但是,如果我能闪电那么这里是什么结果显示:
我加载的图片是在涂料中创建了一个简单BMP图像的100×100。