小编jwl*_*ton的帖子

升级到OS 10.11,Xcode 7.0.1后,GLSL纹理采样器无法正常工作

我有一个OpenGL(4.1)应用程序,我在Xcode中构建,在升级之前运行正常,但现在没有向OpenGL视图写入任何内容.应用程序构建时没有错误或警告,GLSL着色器编译和链接没有错误.

我运行了一些测试,看看着色器是否基本正常工作:

如果片段着色器的最后一行是:

fragColor = vec4(1.0, 0.0, 0.0, 1.0);
Run Code Online (Sandbox Code Playgroud)

OpenGL窗口应该是完全红色的.我认为这也证实了顶点数据正确传递.我可以动画视图围绕任何轴旋转,我再次可以看到正确传递顶点数据(包括深度).

如果片段着色器的最后一行是:

fragColor = vec4(texCoord[0], 0.0, 0.0, 1.0);
Run Code Online (Sandbox Code Playgroud)

要么

fragColor = vec4(texCoord[1], 0.0, 0.0, 1.0);
Run Code Online (Sandbox Code Playgroud)

我在x或y方向上得到一个红色渐变,向我指示纹理坐标也正确传递.

所以我认为纹理数据本身由于某种原因没有被传递到采样器中.这是相关的代码.

创建纹理的代码是:

glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

glGenTextures( 1, appController->appDelegate->wispTexture);
glBindTexture(GL_TEXTURE_2D, appController->appDelegate->wispTexture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, (GLsizei)TEXTUREWIDTH, (GLsizei)TEXTUREHEIGHT, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, appController->appDelegate->wispTexture[0]);
Run Code Online (Sandbox Code Playgroud)

glTexImage2D调用的数据源现在为null,因为我稍后在应用程序中加载它.应用程序构建纹理图像数据,但现在只是为了测试着色器的操作我将它加载到纯白色:

for(int i = 0; i < NUMTEXTUREPOINTS; i++)
{
    appController->textureManager->wispBitmapData[i].red = 255;
    appController->textureManager->wispBitmapData[i].green = 255; …
Run Code Online (Sandbox Code Playgroud)

opengl glsl osx-elcapitan

11
推荐指数
1
解决办法
244
查看次数

标签 统计

glsl ×1

opengl ×1

osx-elcapitan ×1