首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SharpGL 2D纹理问题

SharpGL 2D纹理问题
EN

Stack Overflow用户
提问于 2016-10-12 00:34:04
回答 2查看 1.2K关注 0票数 0

我正在尝试使用SharpGL包装器使用运行时生成的纹理对三角形进行纹理处理。

我不明白为什么三角形没有纹理。

放入绘制循环的gl.Error()返回0,表示为GL_NO_ERROR。

代码语言:javascript
复制
 private void openGLControl_OpenGLDraw(object sender, OpenGLEventArgs args)
    {

        OpenGL gl = openGLControl.OpenGL;
        gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT );
        gl.LoadIdentity();
        gl.Color(1.0f,1.0f,1.0f,1.0f);
        gl.Begin(OpenGL.GL_TRIANGLES);
        gl.TexCoord(0, 1.0f);
        gl.Vertex(0.0f, 0.0f);
        gl.TexCoord(1.0f, 0f);
        gl.Vertex(1.0f, 0f);
        gl.TexCoord(1.0f, 1.0f);
        gl.Vertex(1.0f, 1.0f);
        gl.End();

    }

    private void openGLControl_OpenGLInitialized(object sender, OpenGLEventArgs args)
    {

        Random rnd = new Random();
        OpenGL gl = openGLControl.OpenGL;
        gl.ClearColor(0, 0, 0, 0);

        gl.Enable(OpenGL.GL_TEXTURE_2D);

        byte[] colors = new byte[256 * 256 * 4];

        for (int i = 0; i < 256 * 256 * 4; i++)
        {
            colors[i] = (byte)rnd.Next(256);
        }

        uint[] textureID = new uint[1];
        gl.GenTextures(1, textureID);
        gl.TexImage2D(OpenGL.GL_TEXTURE_2D, 0, (int)OpenGL.GL_RGBA, 256, 256, 0, OpenGL.GL_RGBA, OpenGL.GL_BYTE, colors);
        gl.BindTexture(OpenGL.GL_TEXTURE_2D, textureID[0]);

    }
EN

回答 2

Stack Overflow用户

发布于 2016-10-12 01:10:11

在调用gl.TexImage2D之前,必须先调用gl.BindTexture

原因在于两个函数的第一个参数。OpenGL有一个状态机,可以跟踪绑定的内容。调用gl.TexImage2D时,将告诉GL将像素上载到当前绑定到OpenGL.GL_TEXTURE_2D的纹理。gl.BindTexture会将生成的纹理绑定到OpenGL.GL_TEXTURE_2D

票数 0
EN

Stack Overflow用户

发布于 2016-10-12 06:17:02

纹理不可见的原因是缺少设置:

代码语言:javascript
复制
uint[] array = new uint[] { OpenGL.GL_NEAREST };
        gl.TexParameterI(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, array);
        gl.TexParameterI(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MAG_FILTER, array);

默认情况下,SharpGL使用的是没有生成的MipMap。

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

https://stackoverflow.com/questions/39982243

复制
相关文章

相似问题

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