android-纹理和颜色在OpenGL ES中无法正确显示

android-纹理和颜色在OpenGL ES中无法正确显示,第1张

概述我一直在http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_3D.html处跟踪教程,但遇到了问题.我设法使以下两个示例都能正常工作:2.7示例5:3D形状-旋转彩色立方体和金字塔(Nehe课程5:3D形状)示例2:Cube2.java2.8示例6:纹理(Nehe课程6:纹理)但是当我尝试同时绘制彩色

我一直在http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_3D.html处跟踪教程,但遇到了问题.

我设法使以下两个示例都能正常工作:

2.7示例5:3D形状-旋转彩色立方体和金字塔(Nehe课程5:3D形状)
示例2:Cube2.java

2.8示例6:纹理(Nehe课程6:纹理)

但是当我尝试同时绘制彩色立方体和纹理立方体时,我得到以下信息:

http://i.imgur.com/Smbsa.png
(图像的第一部分)

有色立方体是不可见的,但会剪切纹理立方体,并且纹理立方体的纹理将由有色立方体的最后一个颜色(黄色)着色.

我基本上只是用以下方法绘制两个立方体:

  // ----- Render the color Cube -----  gl.glLoadIDentity();                // reset the model-vIEw matrix  gl.glTranslatef(0.0f, 0.0f, -6.0f); // Translate right and into the screen  gl.glScalef(0.5f, 0.5f, 0.5f);      // Scale down (NEW)  gl.glrotatef(angleCube, 1.0f, 1.0f, 0.0f); // rotate about the axis (1,1,1) (NEW)  cube.draw(gl);                      // Draw the cube (NEW)  // Update the rotational angle after each refresh (NEW)  angleCube += speedCube;         // (NEW)  // ----- Render the Texture Cube -----  gl.glLoadIDentity();                // reset the model-vIEw matrix  gl.glTranslatef(-1.0f, 0.0f, -6.0f); // Translate right and into the screen  gl.glScalef(0.5f, 0.5f, 0.5f);      // Scale down (NEW)  gl.glrotatef(angleCube, 1.0f, 1.0f, 0.0f); // rotate about the axis (1,1,1) (NEW)  texturecube.draw(gl);                      // Draw the cube (NEW)@H_301_23@

我尝试从“ 2.9示例6a:照片立方体”部分添加第三个所谓的“照片立方体”.

(只能发布2个链接,请检查上面的imgur链接)

我补充说:

 gl.glcolor4f(0.0f, 0.0f, 1.0f, 1.0f);@H_301_23@

到纹理立方体,并注意到蓝色“溢出”到照片立方体.

当我添加:

 gl.glcolor4f(1.0f, 1.0f, 1.0f, 0.0f);@H_301_23@

以下纹理不再着色,但这就像去除过去颜色的粗略方法.

当我删除时:

  texturecube.loadTexture(gl, context);    // Load image into Texture (NEW)  photocube.loadTexture(gl);    // Load image into Texture (NEW)  gl.glEnable(GL10.GL_TEXTURE_2D);  // Enable texture (NEW)@H_301_23@

有时候是这样的:

(只能发布2个链接,请检查上面的imgur链接)

彩色立方体在背面,所有其他表面均已着色.

我的问题:

当彩色立方体消失时,我在做什么错? (我想应该可以同时使用纹理和颜色)

除了“ gl.glcolor4f(1.0f,1.0f,1.0f,0.0f);”之外,还有没有更好的方法可以从先前的多维数据集/对象中“清除”颜色?

解决方法:

您的问题非常详细,这很好,但是如果您将绘图部分的完整代码示例发布了,将会有所帮助.我很难猜测您可能会做些什么而导致问题.

无论如何,我会尝试您的两个问题:

首先:我的猜测是,在绘制彩色立方体之前,您不会禁用纹理化.但是您没有完整的代码,所以我不能确定地说.渲染第二个多维数据集之前调用gldisable(GL_TEXTURE_2D),并在绘制下一个纹理多维数据集之前重新启用它.

第二:不,那是正确的方法(尽管您可能想要1,1,1,1,而不是1,1,1,0,以防您想做任何透明的事情).另外,有一种方法可以将颜色状态推送到OpenGL堆栈中,然后再将其d出,尽管这已被弃用,不应使用.

总结

以上是内存溢出为你收集整理的android-纹理和颜色在OpenGL ES中无法正确显示全部内容,希望文章能够帮你解决android-纹理和颜色在OpenGL ES中无法正确显示所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1073867.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)