2017-03-08 3 views
0

glut.hを私のCodeblocksにインストールしました。黒い背景に赤い線を出力するプログラムを書いた。しかし、彼の窓だけが現れています。このコードは別のPCで正常に動作します。何が問題ですか?それは私自身のラップトップの問題ですか?プログラミングはウィンドウを表示するだけです

#include<windows.h> 
#ifdef __APPLE__ 
#include <GLUT/glut.h> 
#else 
#include <GL/glut.h> 
#endif 
#include<stdlib.h> 
#include<stdio.h> 
#define ROUND(x) ((int)(x+0.5)) 

float xa=0,xb=50,y,m,ya=0,yb=50; 

void display (void) 
{   
    int dx=xb-xa,dy=yb-ya,steps,k; 
    float xIncrement,yIncrement,x=xa,y=ya; 
    glClear (GL_COLOR_BUFFER_BIT); 
    glColor3f (1.0, 0.0, 0.0); 
    if(abs(dx)>abs(dy)) 
     steps=abs(dx); 
    else steps=abs(dy); 

    xIncrement=dx/(float)steps; 
    yIncrement=dy/(float)steps; 
    glBegin(GL_POINTS); 
    glVertex2s(ROUND(x),ROUND(y)); 
    for(k=0; k<steps; k++) 
    { 
     x+=xIncrement; 
     y+=yIncrement; 
     glVertex2s(ROUND(x),ROUND(y)); 
    } 

    glEnd(); 
    glFlush(); 
} 

void init(void) 
{ 
    glClearColor (0.0, 0.0, 0.0, 0.0); 
    glOrtho(-100.0, 100.0, -100.0, 100.0, -1.0, 1.0); 
} 

int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); 
    glutInitWindowSize (500, 500); 
    glutInitWindowPosition (100, 100); 
    glutCreateWindow ("DDA algorithm"); 
    init(); 
    glutDisplayFunc(display); 
    glutMainLoop(); 
    return 0; 
} 

答えて

1

空白の画面が表示される理由は、バッファリングされた単一のウィンドウを使用しているためです。描画後すぐに画面を消去します。また、交換

void display(void) 
{ 
    // everything else 

    glutSwapBuffers(); 
} 

ながら:

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) 

で:

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) 
+0

TNXたくさん

ソリューションは、ウィンドウがダブルバッファリングされ、レンダリング後のバッファを交換することです。あなたは私の日を救います、なぜこのコードは他のPCで動作しますか? - Vallentin –

+0

多くの要因がありますので、言い難い特に原因は何か私のラップトップにも赤い線が表示されましたが、画面のサイズを変更すると空白になりました。 – Vallentin

関連する問題