gpt4 book ai didi

iphone - OpenGL ES 2.0 纹理

转载 作者:行者123 更新时间:2023-12-03 19:16:00 24 4
gpt4 key购买 nike

我正在尝试在 iPhone 上的 OpenGL ES 2.0 中渲染一个简单的纹理四边形。几何形状很好,如果我在着色器中使用纯色,我会得到预期的四边形:

gl_FragColor = vec4 (1.0, 0.0, 0.0, 1.0);

如果直接渲染纹理坐标,我会得到预期的渐变:

gl_FragColor = vec4 (texCoord.x, texCoord.y, 0.0, 1.0);

图像数据从 UIImage 加载,缩放以适合 1024x1024,然后加载到纹理中,如下所示:

glGenTextures (1, &_texture);
glBindTexture (GL_TEXTURE_2D, _texture);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA,
GL_UNSIGNED_BYTE, data);
正如调试器中所检查的,

宽度高度数据的内容都是正确的。

当我更改片段着色器以使用纹理时:

gl_FragColor = texture2D (tex, texCoord);

...并绑定(bind)纹理并像这样渲染:

glActiveTexture (GL_TEXTURE0);
glBindTexture (GL_TEXTURE_2D, _texture);

// this is unnecessary, as it defaults to 0, but for completeness...
GLuint texLoc = glGetUniformLocation(_program, "tex");
glUniform1i(texLoc, 0);

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

...我什么也没得到。黑色四边形。 glGetError() 不会返回错误,并且 glIsTexture(_texture) 返回 true。

我在这里做错了什么?我已经一遍又一遍地检查了我在网上可以找到的每个示例,但每个人都按照我的方式做,并且调试器显示的各种 GL 函数的参数正是我所期望的。

最佳答案

在 glTexImage2D 之后,使用 glTexParameter 设置 MIN/MAG 过滤器,默认使用 mipmap,因此该代码的纹理不完整。

关于iphone - OpenGL ES 2.0 纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4347725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com