GL_POLYGONMODE不知道如何正确使用

时间:2014-11-25 15:01:37

标签: java opengl

我想绘制一个对象,其线条为黄色(线框),其填充物为黑色,因此我可以看到差异。我知道为了做到这一点,我必须使用glPolygonMode(int arg1,int arg2),但我不知道如何正确地做到这一点,这就是我做的事情...... / p>

  gl1.glColor3d(1.0, 1.0, 0.0);
    gl1.glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    gl1.glColor3d(0.0, 0.0, 0.0);
    gl1.glBegin(GL_POLYGON);

问题是这只会填充多边形并忘记线条......

1 个答案:

答案 0 :(得分:2)

要绘制带有不同颜色轮廓的颜色填充多边形,您必须绘制两次模型:

  • 在第一次传递中,将polygonmode设置为GL_FILL,颜色设置为多边形颜色。
  • 在第二次绘制调用中,绘制相同的模型,将polygonmode设置为GL_LINE并使用轮廓颜色。

代码看起来如下:

gl1.glColor3d(1.0, 1.0, 0.0);
gl1.glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
gl1.glBegin(GL_POLYGON);
//Draw model
gl1.glEnd();

gl1.glColor3d(0.0, 0.0, 0.0);
gl1.glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
gl1.glBegin(GL_POLYGON);
//Draw model again
gl1.glEnd();

如果启用了深度测试,则必须在第二遍中将模型绘制得更接近相机以通过深度测试。例如,您可以使用glPolygonOffset的第二个参数执行此操作。

此外:如果没有充分理由,则不应再使用固定功能功能,因为它已被弃用。