java - GL_POLYGONMODE不知道如何正确使用

标签 java opengl

我想绘制一个对象,其线条为黄色(线框),填充物为黑色,以便我可以看到差异。我知道为了做到这一点,我必须使用 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/

相关文章:

java - 方法 userAccounts() 未定义类型 new View.OnClickListener(){}

java - Guice 注入(inject)根据每个请求创建的上下文实例

c++ - 无法使用 freetype2 为 opengl 正确加载 "glyp"

c++ - glTexImage3D 抛出异常

java - LWJGL 中带有纹理的 VBO

c++ - GLEW 库和代码:: block

java - 使用 Java 打开一个新的控制台窗口并让 Console 对象引用它

Java:Guava 多重映射,put-Method 覆盖具有相同键的条目

c++ - 使用 SDL_ttf 和 OpenGL,TTF_RenderUTF8_Blended 打印红色矩形

java - Jooq - 使用 UpdatableRecord 对 select 的结果进行排序