2017-04-23 75 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