2017-04-23 74 views
0

我想用OpenGL绘制三角图。这是我的代码的一部分:使用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; 

这部分重复我的完整代码。当这被执行时,我什么都看不到。有人可以告诉我为什么会发生这种情况吗?

+0

是您的背景上的黑色?上下文是否已初始化?你能画出Tringles还是其他的东西? – MalaKa

+0

我的背景是白色的,线条有黑色,上下文已初始化@MalaKa – kimchiboy03

回答

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. 错误的相机设置

    我没有看到任何矩阵代码,所以我希望你的相机面对正确的方向,你的图是在frustrum或任何你使用的...

  4. GL渲染

    如果您的GL代码丢失或错误的结构,那么它应该像这样(puted在一起,所有的子弹):

    // (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时没有犯任何错误。

欲了解更多信息,请参阅:

+0

谢谢@Spektre It Works! – kimchiboy03

+0

@ kimchiboy03现在,您可以逐行删除,以便首先找出问题所在。我敢打赌,你的矩阵并不是为你所渲染的比例设置的,或者根本就不是。 – Spektre