openGL绘制立方体时,如何在屏幕上同时观察到立方体的三个面
看了一些openGL的教程,其中关于立方体构造方面的内容,很少讲到如何同时显示立方体的三个面。目前的效果是:我期望的效果是:我认为关键性的代码如下:publicvoido...
看了一些openGL的教程,其中关于立方体构造方面的内容,很少讲到如何同时显示立方体的三个面。目前的效果是:
我期望的效果是:
我认为关键性的代码如下:
public void onDrawFrame(GL10 gl) {
if (mCallback != null) {
mCallback.animate();
}
gl.glClearColor(0.5f,0.5f,0.5f,1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glTranslatef(0f, 0f, -3.0f);
gl.glScalef(0.5f, 0.5f, 0.5f);
gl.glColor4f(0.7f, 0.7f, 0.7f, 1.0f);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glShadeModel(GL10.GL_SMOOTH);
gl.glEnable(GL10.GL_DEPTH_TEST);
mWorld.draw(gl);
}
我试着修改了gl.glTranslatef的参数,改成gl.glTranslatef(0.5f, -0.3f, -3.0f),发现效果并不太好。还望大家指点迷津,谢谢 展开
我期望的效果是:
我认为关键性的代码如下:
public void onDrawFrame(GL10 gl) {
if (mCallback != null) {
mCallback.animate();
}
gl.glClearColor(0.5f,0.5f,0.5f,1);
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glTranslatef(0f, 0f, -3.0f);
gl.glScalef(0.5f, 0.5f, 0.5f);
gl.glColor4f(0.7f, 0.7f, 0.7f, 1.0f);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_COLOR_ARRAY);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glShadeModel(GL10.GL_SMOOTH);
gl.glEnable(GL10.GL_DEPTH_TEST);
mWorld.draw(gl);
}
我试着修改了gl.glTranslatef的参数,改成gl.glTranslatef(0.5f, -0.3f, -3.0f),发现效果并不太好。还望大家指点迷津,谢谢 展开
1个回答
展开全部
你别只用Translate啊 ,关键是要用Rotate把这个魔方 横向旋转45度,纵向也45度
我记得差不多是
glRotatef(45,0,1,0);
glRotatef(45,1,0,0);
我记得差不多是
glRotatef(45,0,1,0);
glRotatef(45,1,0,0);
追问
我试着这样修改过,由于我是直接在旋转立方体的代码基础上修改的,我发现当我把旋转立方体的旋转部分代码(位于OnDrawFrame大方法下)gl.glRotatef(angleCube, 1.0f, 1.0f, 1.0f);改成你给的代码后,这个立方体并没有旋转,而是依旧只显示了一个面?不知这是怎么回事?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询