我一直在关注http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_3D.html上的教程,但遇到了问题。
我已经设法使以下两个示例都起作用:
2.7 示例 5:3D 形状 - 旋转颜色立方体和金字塔(尼赫第 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)
我尝试从“ 2.9 示例 6a:Photo-Cube ”部分添加第三个所谓的“照片立方体”。
(只能发2个链接查看上面的imgur链接)
我补充说:
gl.glColor4f(0.0f, 0.0f, 1.0f, 1.0f);
到纹理立方体并注意到蓝色“溢出”到照片立方体上。
当我添加:
gl.glColor4f(1.0f, 1.0f, 1.0f, 0.0f);
以下纹理不再着色,但这感觉像是去除过去颜色的粗略方法..
当我删除:
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)
有时候是这样的:
(只能发2个链接查看上面的imgur链接)
颜色立方体回来了,所有其他表面都被着色了。
我的问题:
当彩色立方体消失时我做错了什么?(我想应该可以同时使用纹理和颜色)
除了“gl.glColor4f(1.0f, 1.0f, 1.0f, 0.0f);”之外,有没有更好的方法从以前的立方体/对象中“清除”颜色?