用OpenGL绘制三角图?

时间:2017-04-23 08:09:54

标签: java opengl graphics trigonometry

我正在尝试使用OpenGL绘制三角图。这是我的代码的一部分:

   double x = -1;
   gl.glColor3d(0, 0, 0);
   gl.glBegin(gl.GL_LINES);
    gl.glVertex2d(x, Math.sin(Math.toRadians(x))*0.01);
    gl.glVertex2d(x+0.01, Math.sin(Math.toRadians(x+0.01))*0.01);
   gl.glEnd();

   x += 0.01;

我的完整代码中重复了这一部分。执行此操作时,我什么也看不见。谁能告诉我为什么会这样呢?

1 个答案:

答案 0 :(得分:0)

  1. 我的代码中没有看到任何循环

    并且尺度是可疑的(没有矩阵很难说)试试这个:

    double x;
    gl.glColor3d(0.0, 0.0, 0.0);
    gl.glBegin(gl.GL_LINE_STRIP);
    for (x=-180.0;x<=180.0;x+=0.01)
     gl.glVertex2d(x/180.0, Math.sin(Math.toRadians(x)));
    gl.glEnd();
    

    它使用LINE_STRIP代替LINES,图表缩放为<-1,+1>,这很可能是您的观看区域...

  2. 设置

    此外,可能还有其他问题,如评论建议。在他们之上检查明显的:

    gl.glDisable(gl.GL_DEPTH_TEST);
    gl.glDisable(gl.GL_TEXTURE_2D);
    

    如果它们是从代码的其他部分设置的......

  3. 错误的相机设置

    我没有看到任何矩阵代码,所以我希望你的相机朝向正确的方向,你的图形在里面或者你用的任何东西......

  4. GL渲染

    如果您的GL代码丢失或结构错误,那么它应该看起来像这样(将所有项目符号组合在一起):

    // (double) buffering
    gl.glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
    gl.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT); // non eed for the depth although
    // here set matrices in case they are not persistent
    gl.glMatrixMode(gl.GL_MODELVIEW);
    gl.glLoadIdentity();
    gl.glMatrixMode(gl.GL_PROJECTION);
    gl.glLoadIdentity();
    // here set/reset config the pipeline
    gl.glDisable(gl.GL_DEPTH_TEST);
    gl.glDisable(gl.GL_TEXTURE_2D);
    gl.glLineWidth(1.0);
    // here render
    double x;
    gl.glColor3d(0.0, 0.0, 0.0);
    gl.glBegin(gl.GL_LINE_STRIP);
    for (x=-180.0;x=<180.0;x+=0.01)
     gl.glVertex2d(x/180.0, Math.sin(Math.toRadians(x)));
    gl.glEnd();
    // (double) buffering
    gl.glFlush();
    SwapBuffers(hdc);
    

    我没有在JAVA中编码,所以代替SwapBuffers(hdc);使用JAVA中的任何内容来实现相同的目的。希望我在翻译JAVA时没有犯任何错误。

  5. 有关详细信息,请参阅: