首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示纹理Tao的麻烦-framework/OpenGl

显示纹理Tao的麻烦-framework/OpenGl
EN

Stack Overflow用户
提问于 2013-05-06 18:30:10
回答 1查看 861关注 0票数 0

我正在使用Tao框架来处理OpenGl。我正在尝试加载纹理并将其显示在窗体上。图像似乎被正确加载(生成纹理id且没有错误发生),但它没有正确显示。

下面是我加载纹理的代码

代码语言:javascript
复制
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;
    }
}

以及绘制它的代码:

代码语言:javascript
复制
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();

表单是空白的。但是,如果我启用闪电,则会显示以下内容:

我正在加载的图像是一个用Paint创建的简单的bmp图像100x100。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-12 16:44:13

出现此问题是因为图像的大小不正确。图像大小应为64x64、128x128或256x256。将大小更改为128x128,一切工作正常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16396799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档