【问题标题】:Apply color using VAO in jogl在 jogl 中使用 VAO 应用颜色
【发布时间】:2015-07-18 23:55:09
【问题描述】:

我正在尝试在 jogl 中为我的多边形着色。我将顶点存储在一个数组中,一个三角形顺序的索引数组和一个颜色数组。代码如下,但我面临的问题是三角形是白色的,而不是颜色缓冲区中的颜色。

    float f[] = {1000,2000,-4000,-2000,-2000,-4000,2000,-2000,-4000,1000,-4000,-4000};
    FloatBuffer buffer = GLBuffers.newDirectFloatBuffer(12);
    this.coordCount = 12;
    buffer.put(f);
    buffer.rewind();

    int indx[] = {0,1,2,1,3,2};
    IntBuffer indxBuffer = GLBuffers.newDirectIntBuffer(6); //Total number of vertices
    this.indexCount = 6;
    indxBuffer.put(indx);
    indxBuffer.rewind();

    float color[] = {1,0,1,0,0,0,0,0,0,1,0,0};
    FloatBuffer colorBuffer = GLBuffers.newDirectFloatBuffer(12);
    colorBuffer.put(color);
    colorBuffer.rewind();

    gl.glDisable(GL.GL_TEXTURE_2D);
    gl.glEnableClientState(GLPointerFunc.GL_COLOR_ARRAY);
    gl.glEnableClientState(GLPointerFunc.GL_VERTEX_ARRAY);
    gl.glFrontFace(GL.GL_CCW);

    gl.glVertexPointer(3, GL.GL_FLOAT, 0, buffer);
    gl.glColorPointer(3, GL.GL_FLOAT, 0, colorBuffer);

    gl.glDrawElements(GL.GL_TRIANGLES, this.indexCount, GL.GL_UNSIGNED_INT, indxBuffer);

    gl.glDisableClientState(GLPointerFunc.GL_COLOR_ARRAY);
    gl.glDisableClientState(GLPointerFunc.GL_VERTEX_ARRAY);
    gl.glEnable(GL.GL_TEXTURE_2D);

我正在 NASA 世界风球上进行此渲染。但我认为这不会造成任何问题。有人可以帮我解决问题吗?我被困了一段时间。

谢谢,

【问题讨论】:

    标签: colors rendering jogl worldwind vao


    【解决方案1】:

    找到解决方案,只需要启用颜色和材质。

       gl.glEnable(GL2.GL_COLOR_MATERIAL);
       gl.glColorMaterial(GL2.GL_FRONT_AND_BACK, GL2.GL_DIFFUSE);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 2021-11-25
      相关资源
      最近更新 更多