关于opengl画正面半透明立方体问题?
我用opengl画了个立方体,大致如下:
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
useColor(); //给材料设置颜色
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
materials.apply();//正面材料定义(glMaterialfv(GL_FRONT, GL_DIFFUSE, _diffuse.rgba()))正面0.5 materials.apply_back();//背面材料定义(glMaterialfv(GL_BACK, GL_DIFFUSE, d.rgba()))背面1.0
glBegin(GL_QUADS);
glNormal3f(0.0f,0.0f,1.0f);//front
glVertex3f(pointD.getX(), pointD.getY(), pointD.getZ());
glVertex3f(pointC.getX(), pointC.getY(), pointC.getZ());
glVertex3f(pointB.getX(), pointB.getY(), pointB.getZ());
glVertex3f(pointA.getX(), pointA.getY(), pointA.getZ());
glNormal3f(0.0f,0.0f,-1.0f);//back
glVertex3f(pointH.getX(), pointH.getY(), pointH.getZ());
glVertex3f(pointG.getX(), pointG.getY(), pointG.getZ());
glVertex3f(pointF.getX(), pointF.getY(), pointF.getZ());
glVertex3f(pointE.getX(), pointE.getY(), pointE.getZ());
glNormal3f(-1.0f,0.0f,0.0f);//legt
glVertex3f(pointG.getX(), pointG.getY(), pointG.getZ());
glVertex3f(pointD.getX(), pointD.getY(), pointD.getZ());
glVertex3f(pointA.getX(), pointA.getY(), pointA.getZ());
glVertex3f(pointF.getX(), pointF.getY(), pointF.getZ());
glNormal3f(1.0f,0.0f,0.0f);//right
glVertex3f(pointC.getX(), pointC.getY(), pointC.getZ());
glVertex3f(pointH.getX(), pointH.getY(), pointH.getZ());
glVertex3f(pointE.getX(), pointE.getY(), pointE.getZ());
glVertex3f(pointB.getX(), pointB.getY(), pointB.getZ());
glNormal3f(0.0f,1.0f,0.0f);//top
glVertex3f(pointA.getX(), pointA.getY(), pointA.getZ());
glVertex3f(pointB.getX(), pointB.getY(), pointB.getZ());
glVertex3f(pointE.getX(), pointE.getY(), pointE.getZ());
glVertex3f(pointF.getX(), pointF.getY(), pointF.getZ());
glNormal3f(0.0f,-1.0f,0.0f);//bottom
glVertex3f(pointC.getX(), pointC.getY(), pointC.getZ());
glVertex3f(pointD.getX(), pointD.getY(), pointD.getZ());
glVertex3f(pointG.getX(), pointG.getY(), pointG.getZ());
glVertex3f(pointH.getX(), pointH.getY(), pointH.getZ());
glEnd();
可是看到的立方体确实正反面都是半透明的,问什么??我忘了设置什么了吗??
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
useColor(); //给材料设置颜色
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
materials.apply();//正面材料定义(glMaterialfv(GL_FRONT, GL_DIFFUSE, _diffuse.rgba()))正面0.5 materials.apply_back();//背面材料定义(glMaterialfv(GL_BACK, GL_DIFFUSE, d.rgba()))背面1.0
glBegin(GL_QUADS);
glNormal3f(0.0f,0.0f,1.0f);//front
glVertex3f(pointD.getX(), pointD.getY(), pointD.getZ());
glVertex3f(pointC.getX(), pointC.getY(), pointC.getZ());
glVertex3f(pointB.getX(), pointB.getY(), pointB.getZ());
glVertex3f(pointA.getX(), pointA.getY(), pointA.getZ());
glNormal3f(0.0f,0.0f,-1.0f);//back
glVertex3f(pointH.getX(), pointH.getY(), pointH.getZ());
glVertex3f(pointG.getX(), pointG.getY(), pointG.getZ());
glVertex3f(pointF.getX(), pointF.getY(), pointF.getZ());
glVertex3f(pointE.getX(), pointE.getY(), pointE.getZ());
glNormal3f(-1.0f,0.0f,0.0f);//legt
glVertex3f(pointG.getX(), pointG.getY(), pointG.getZ());
glVertex3f(pointD.getX(), pointD.getY(), pointD.getZ());
glVertex3f(pointA.getX(), pointA.getY(), pointA.getZ());
glVertex3f(pointF.getX(), pointF.getY(), pointF.getZ());
glNormal3f(1.0f,0.0f,0.0f);//right
glVertex3f(pointC.getX(), pointC.getY(), pointC.getZ());
glVertex3f(pointH.getX(), pointH.getY(), pointH.getZ());
glVertex3f(pointE.getX(), pointE.getY(), pointE.getZ());
glVertex3f(pointB.getX(), pointB.getY(), pointB.getZ());
glNormal3f(0.0f,1.0f,0.0f);//top
glVertex3f(pointA.getX(), pointA.getY(), pointA.getZ());
glVertex3f(pointB.getX(), pointB.getY(), pointB.getZ());
glVertex3f(pointE.getX(), pointE.getY(), pointE.getZ());
glVertex3f(pointF.getX(), pointF.getY(), pointF.getZ());
glNormal3f(0.0f,-1.0f,0.0f);//bottom
glVertex3f(pointC.getX(), pointC.getY(), pointC.getZ());
glVertex3f(pointD.getX(), pointD.getY(), pointD.getZ());
glVertex3f(pointG.getX(), pointG.getY(), pointG.getZ());
glVertex3f(pointH.getX(), pointH.getY(), pointH.getZ());
glEnd();
可是看到的立方体确实正反面都是半透明的,问什么??我忘了设置什么了吗??
...全文
相关推荐
qt opengl 混合半透明效果
自做的opengl半透明效果,其中还包含obj模型加载,mipmap纹理。因为要有一个场景演示半透明效果;半透明效果给出了两种不同的混合因子的效果。
Android下 OpenGL ES 2.0 混合半透明效果demo
Android端使用OpenGL ES 2.0 实现的入门版混合半透明效果demo
OpenGL入门学习之九——使用混合来实现半透明效果.pdf
OpenGL入门学习之九——使用混合来实现半透明效果.pdf
QT-opengl窗体,实现了 1.绘制立方体, 2.读取点云并显示 3.相机可以进行简单旋转,旋转速度可以渐渐变缓 4.可以半透明(融合)演示。
QT-opengl窗体,实现了 1.绘制立方体, 2.读取点云并显示 3.相机可以进行简单旋转,旋转速度可以渐渐变缓 4.可以半透明(融合)演示。
实现OpenGL混合 3D
实现三维的OpenGL混合 alpha3D debug alpha.sdf alpha.sln


图形处理/算法
