囲んでいるウィンドウの寸法に対して線の長さを描く方法を知りたいです。GLUT と OpenGL の組み合わせを使用していることに注意してください。
たとえば、画面の下部中央から線を引きたいとします (これは座標 (WINDOW_LENGTH/2, 0) でウィンドウの中央 (WINDOW_LENGTH/2, WINDOW_HEIGHT/2) にあると仮定します)。
OpenGLでこれを行うにはどうすればよいですか? 現在、私は次のものを持っています:
//Initializes 3D rendering
void initRendering() {
//Makes 3D drawing work when something is in front of something else
glEnable(GL_DEPTH_TEST);
}
//Called when the window is resized
void handleResize(int w, int h) {
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION); //Switch to setting the camera perspective
//Set the camera perspective
glLoadIdentity(); //
gluPerspective(45.0, (double)w / (double)h, 1.0, 200.0);
}
//Draws the 3D scene
void drawScene() {
//Clear information from last draw
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW); //Switch to the drawing perspective
glLoadIdentity(); //Reset the drawing perspective
glTranslatef(0, 0, -1);
glBegin(GL_LINES);
//lines
glVertex2f(0, 0);
glVertex2f(0, .25);
glEnd();
glutSwapBuffers(); //Send the 3D scene to the screen
}
int main(int argc, char** argv) {
//Initialize GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(400, 400); //Set the window size
//Create the window
glutCreateWindow("Basic Shapes - videotutorialsrock.com");
initRendering(); //Initialize rendering
//Set handler functions for drawing, keypresses, and window resizes
glutDisplayFunc(drawScene);
//glutKeyboardFunc(handleKeypress);
glutReshapeFunc(handleResize);
cout << "GLUT_WINDOW_X: " << GLUT_WINDOW_X << endl;
cout << "GlUT_WINDOW_Y: " << GLUT_WINDOW_Y << endl;
glutMainLoop(); //Start the main loop. glutMainLoop doesn't return.
return 0; //This line is never reached
}
これにより、次の結果が得られます。
私にとって意味をなさないのは、ウィンドウの寸法が 400 X 400 であるのに、座標:glVertex2f(0, 0)
とglVertex2f(0, .25)
. ウィンドウのほぼ中央からウィンドウの高さの約 80% まで線を引きます。私はいくつかの推測を持っています:
glTranslatef(0, 0, -1);
への呼び出しが原点をグローバル座標に設定することはわかってい(0, 0, -1)
ます。
- -1 は、画像をそこまで移動することにどのように対応していますか?
.25
2 番目の座標の は高さの 25% に相当しますか?- (WINDOW_LENGTH/2, 0) から (WINDOW_LENGTH/2, WINDOW_HEIGHT/2) までの線を引くコードはどのようになりますか。これは、ウィンドウの下部中央からウィンドウの中央までの線です。
さらに情報が必要な場合はお知らせください。