我想绘制一个对象,其线条为黄色(线框),填充物为黑色,以便我可以看到差异。我知道为了做到这一点,我必须使用 glPolygonMode(int arg1, int arg2) 但我不知道如何正确地做到这一点,这就是我正在做的......
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);
问题是这只填充了多边形而忘记了线条......
最佳答案
要绘制具有不同颜色轮廓的填充颜色的多边形,您必须绘制模型两次:
- 在第一遍中,多边形模式设置为 GL_FILL,颜色设置为多边形颜色。
- 在第二次绘制调用中,您将绘制相同的模型,并将多边形模式设置为 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 来执行此操作.
此外:如果没有充分的理由,您不应再使用固定功能,因为它已被弃用。
关于java - GL_POLYGONMODE不知道如何正确使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27130023/