在android中使用openGL绘制四面体时,使用不同颜色的面,但灰色的面会变得扭曲 package com.example.assignment1; 导入java.nio.ByteBuffer; 导入java.nio.ByteOrder; 导入java.nio.FloatBuffer; 导入javax.microedition.khronos.opengles.GL10; 公共类四面体{ private FloatBuffer vertexBuffer;//顶点数组的缓冲区 私有整数面=4; //4个面的颜色代码 私有浮点[][]颜色={//4个面的颜色 {1.0f,0.0f,0.0f,1.0f},//0.red {1.0f,1.0f,1.0f,1.0f},//1.white {0.0f,0.0f,1.0f,1.0f},//2.blue {0.5019f,0.5019f,0.5019f,1.0f},//3.灰色 }; //面顶点坐标 //我指定的顺序正确吗? private float[]顶点={//4个面的顶点 //正面 -1.0f,-1.0f,1.0f, 1.0f,-1.0f,1.0f, 1.0f,1.0f,1.0f, //右脸 -1.0f,-1.0f,1.0f, 1.0f,1.0f,1.0f, -1.0f,-1.0f,-1.0f, //左脸 1.0f,-1.0f,1.0f, -1.0f,-1.0f,-1.0f, 1.0f,1.0f,1.0f, //底部 -1.0f,-1.0f,1.0f, -1.0f,-1.0f,-1.0f, 1.0f,-1.0f,1.0f }; //构造函数-设置缓冲区 公共四面体(){ //设置顶点数组缓冲区。浮点中的顶点。浮点有4个字节 ByteBuffer vbb=ByteBuffer.allocateDirect(顶点.length*4); vbb.order(ByteOrder.nativeOrder());//使用本机字节顺序 vertexBuffer=vbb.asFloatBuffer();//从字节转换为浮点 vertexBuffer.put(顶点);//将数据复制到缓冲区 vertexBuffer.position(0);//倒带 } //画形状 公共作废提款(GL10 gl){ gl.glFrontFace(GL10.gl_CCW);//逆时针方向的正面 //gl.glEnable(GL10.gl_CULL_FACE);//启用消隐面 gl.glCullFace(GL10.gl_BACK);//剔除背面(不显示) gl.glEnableClientState(GL10.gl_顶点数组); gl.glVertexPointer(3,GL10.gl_FLOAT,0,vertexBuffer); //渲染所有面 对于(int face=0;face

在android中使用openGL绘制四面体时,使用不同颜色的面,但灰色的面会变得扭曲 package com.example.assignment1; 导入java.nio.ByteBuffer; 导入java.nio.ByteOrder; 导入java.nio.FloatBuffer; 导入javax.microedition.khronos.opengles.GL10; 公共类四面体{ private FloatBuffer vertexBuffer;//顶点数组的缓冲区 私有整数面=4; //4个面的颜色代码 私有浮点[][]颜色={//4个面的颜色 {1.0f,0.0f,0.0f,1.0f},//0.red {1.0f,1.0f,1.0f,1.0f},//1.white {0.0f,0.0f,1.0f,1.0f},//2.blue {0.5019f,0.5019f,0.5019f,1.0f},//3.灰色 }; //面顶点坐标 //我指定的顺序正确吗? private float[]顶点={//4个面的顶点 //正面 -1.0f,-1.0f,1.0f, 1.0f,-1.0f,1.0f, 1.0f,1.0f,1.0f, //右脸 -1.0f,-1.0f,1.0f, 1.0f,1.0f,1.0f, -1.0f,-1.0f,-1.0f, //左脸 1.0f,-1.0f,1.0f, -1.0f,-1.0f,-1.0f, 1.0f,1.0f,1.0f, //底部 -1.0f,-1.0f,1.0f, -1.0f,-1.0f,-1.0f, 1.0f,-1.0f,1.0f }; //构造函数-设置缓冲区 公共四面体(){ //设置顶点数组缓冲区。浮点中的顶点。浮点有4个字节 ByteBuffer vbb=ByteBuffer.allocateDirect(顶点.length*4); vbb.order(ByteOrder.nativeOrder());//使用本机字节顺序 vertexBuffer=vbb.asFloatBuffer();//从字节转换为浮点 vertexBuffer.put(顶点);//将数据复制到缓冲区 vertexBuffer.position(0);//倒带 } //画形状 公共作废提款(GL10 gl){ gl.glFrontFace(GL10.gl_CCW);//逆时针方向的正面 //gl.glEnable(GL10.gl_CULL_FACE);//启用消隐面 gl.glCullFace(GL10.gl_BACK);//剔除背面(不显示) gl.glEnableClientState(GL10.gl_顶点数组); gl.glVertexPointer(3,GL10.gl_FLOAT,0,vertexBuffer); //渲染所有面 对于(int face=0;face,android,opengl-es,Android,Opengl Es,应该是 gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, face*4, 3); 你面临的问题是什么?你所做的只是发布一些代码。实际上我想给四面体的面上色。但是只有灰色的脸变得杂乱无章,谢谢!!!它起作用了。。。 gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, face*4, 3); gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, face*3, 3);

应该是

gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, face*4, 3);

你面临的问题是什么?你所做的只是发布一些代码。实际上我想给四面体的面上色。但是只有灰色的脸变得杂乱无章,谢谢!!!它起作用了。。。
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, face*4, 3);
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, face*3, 3);