Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone opengl纹理不会显示,尽管代码与代码示例几乎相同_Iphone_Opengl Es - Fatal编程技术网

Iphone opengl纹理不会显示,尽管代码与代码示例几乎相同

Iphone opengl纹理不会显示,尽管代码与代码示例几乎相同,iphone,opengl-es,Iphone,Opengl Es,我在OpenGL ES 1.1中遇到了一个严重的问题,我找不到解决方案,尽管我已经查看了一千遍,但我在这里没有找到类似的问题。我希望你们能帮助我 我在71squared.com上观看了教程2(您可以找到它),并从同一页面下载了代码示例。它运行良好 然后我尝试编写自己的代码,以便使其适应我的项目。无论如何,当谈到OpenGL调用时,我注意使用与示例相同的代码 问题在于:我对glClear()的调用会影响屏幕的颜色,尽管我的纹理不会显示。该问题既不是由UIView子类(如glClear()所示)引起

我在OpenGL ES 1.1中遇到了一个严重的问题,我找不到解决方案,尽管我已经查看了一千遍,但我在这里没有找到类似的问题。我希望你们能帮助我

我在71squared.com上观看了教程2(您可以找到它),并从同一页面下载了代码示例。它运行良好

然后我尝试编写自己的代码,以便使其适应我的项目。无论如何,当谈到OpenGL调用时,我注意使用与示例相同的代码

问题在于:我对glClear()的调用会影响屏幕的颜色,尽管我的纹理不会显示。该问题既不是由UIView子类(如glClear()所示)引起的,也不是由加载纹理的代码引起的,因为相应实例的所有IVAR都已正确计算。此外,甚至纹理坐标和顶点也采用法线值,这与代码示例中的相同。所以这个问题一定是由于我在使用OpenGL时犯了一些小错误造成的

以下是我所有的OpenGL调用:

初始化:

CGRect rect = [[UIScreen mainScreen] bounds];

        // Set up OpenGL projection matrix
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        glOrthof(0, rect.size.width, 0, rect.size.height, -1, 1);
        glMatrixMode(GL_MODELVIEW);
        glViewport(0, 0, rect.size.width, rect.size.height);

        // Initialize OpenGL states
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        glDisable(GL_DEPTH_TEST);
        glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND_SRC);
        glEnableClientState(GL_VERTEX_ARRAY);
绘制纹理:

(t是指向包含有关如何绘制图形的信息的结构的指针。)

我认为这就是问题的根源。如果您想看到我的代码创建帧缓冲区,我可以向您展示它。不过,它与示例中的几乎相同

我非常渴望找到解决方案,因为我已经对整个代码进行了一千次的单步遍历,但是我找不到与代码示例不同的代码片段

先谢谢你。
Dominik

每次生成纹理图像时,都必须使用此方法检查此纹理是否有效。 如果该纹理无效,则需要重新生成该纹理并延迟一段时间

GLboolean glIsTexture(GLuint texture);

谢谢你的回复,@Toro。我不知道。不过,我刚刚对它进行了测试,似乎这并没有造成问题。无论如何,谢谢你。
GLboolean glIsTexture(GLuint texture);