Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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
Objective c alpha为1.0时,OpenGL ES面看起来是透明的?_Objective C_Ios_Opengl Es_Colors_Transparency - Fatal编程技术网

Objective c alpha为1.0时,OpenGL ES面看起来是透明的?

Objective c alpha为1.0时,OpenGL ES面看起来是透明的?,objective-c,ios,opengl-es,colors,transparency,Objective C,Ios,Opengl Es,Colors,Transparency,我正在iOS上为我的应用程序开发一个对象(OBJ文件)加载程序,目前我已经成功读取了对象的顶点和面,现在我正在为导入的模型添加颜色 我现在遇到了一个大问题。从一个有六个面的立方体中,除了两个相对的面是蓝色外,所有面都是红色。此立方体设置为旋转,因此我可以看到所有侧面,但颜色显示不正确,如以下视频所示: 蓝色的脸只有在两个蓝色部分重叠时才会显示,我不明白为什么-我习惯了OpenGL for PC,是不是我缺少了什么导致这种奇怪的颜色 通过为每个顶点发送RGBA RGBA RGBA等格式的大浮点数

我正在iOS上为我的应用程序开发一个对象(OBJ文件)加载程序,目前我已经成功读取了对象的顶点和面,现在我正在为导入的模型添加颜色

我现在遇到了一个大问题。从一个有六个面的立方体中,除了两个相对的面是蓝色外,所有面都是红色。此立方体设置为旋转,因此我可以看到所有侧面,但颜色显示不正确,如以下视频所示:

蓝色的脸只有在两个蓝色部分重叠时才会显示,我不明白为什么-我习惯了OpenGL for PC,是不是我缺少了什么导致这种奇怪的颜色

通过为每个顶点发送RGBA RGBA RGBA等格式的大浮点数组来实现着色

// colours is the name of the array of floats
glColorPointer(colorStride, GL_FLOAT, 0, colors);   
glEnableClientState(GL_COLOR_ARRAY);
glDrawArrays(renderStyle, 0, vertexCount);  
[编辑]

问题现在已经解决了,我刚刚从模型中画出了所有的三角形

glColor4f(0.5f, 0.5f, 0.0f, 1.0f);
glDrawArrays(GL_TRIANGLES, 4, 4);

对于整个阵列,只有一次,当我对模型中的每个面进行分割时,它允许我使用GL_DEPTH_测试,而不会导致屏幕变为空白

问题在于GL_深度_测试被禁用。Opengl没有进行任何深度测试,因此所有对象看起来都很奇怪。为了启用深度测试,必须自己创建新的渲染缓冲区。这是一个关于如何装箱此缓冲区的小片段:

// Create the depth buffer. 
glGenRenderbuffersOES(1, &m_depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, m_depthRenderbuffer); 
glRenderbufferStorageOES(GL_RENDERBUFFER_OES,
GL_DEPTH_COMPONENT16_OES, width, height);
此缓冲区是为OpenGL ES 1.1创建的,对于2.0,只需删除所有“OES”扩展。创建深度缓冲区后,现在可以启用如下深度测试:

    glEnable(GL_DEPTH_TEST);

我自己也有过几次这个问题。

您确定深度测试已启用吗?glEnable(GLU深度试验);在你展示的视频中,我觉得深度测试没有启用,因此立方体有一个奇怪的方面。不,当我启用它时,屏幕会完全变黑,我不知道为什么?谢谢你的回答,但问题现在已经解决了,这是由我画三角形的方式造成的;我又开始了这个项目,它成功了。当我在屏幕完全空白之前尝试GL_深度_测试时!