شاید عنوانم مناسب نباشه ولی یک برنامه نوشتم.
وقتی راست کلید بزنم. و QUADS رو انتخاب کنم. باید یک QUADS رسم کنه. اما هیچ کاری نمیکنه. علتشو نمیدونم چون خطا نمیده. کد رو میزارم. همراه فایل کامل. کسی میتونه کمکی کنه؟
کد:
#include <windows.h>
#include <iostream>
#include <GL/glut.h>
/* process menu option 'op' */
void menu(int op) {
switch(op) {
case 'Q':
case 'q':
exit(0);
case 'b':glBegin(GL_QUADS);
glVertex3f(-1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glEnd();glFlush();
}}
/* executed when a regular key is pressed */
void keyboardDown(unsigned char key, int x, int y) {
switch(key) {
case 'Q':
case 'q':
case 27: // ESC
exit(0);
}
}
/* reshaped window */
void reshape(int width, int height) {
GLfloat fieldOfView = 90.0f;
glViewport (0, 0, (GLsizei) width, (GLsizei) height);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
gluPerspective(fieldOfView, (GLfloat) width/(GLfloat) height, 0.1, 500.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
/* render the scene */
void draw() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
/* render the scene here */
glFlush();
glutSwapBuffers();
}
/* initialize OpenGL settings */
void initGL(int width, int height) {
reshape(width, height);
glClearColor(0.7f, 0.5f, 0.5f, 0.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
}
/* initialize GLUT settings, register callbacks, enter main loop */
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800, 600);
glutInitWindowPosition(100, 100);
glutCreateWindow("Perspective's GLUT Template");
// register glut call backs
glutKeyboardFunc(keyboardDown);
glutReshapeFunc(reshape);
glutDisplayFunc(draw);
glutIgnoreKeyRepeat(true); // ignore keys held down
// create a sub menu
int subMenu = glutCreateMenu(menu);
glutAddMenuEntry("QUADS", 'b');
glutAddMenuEntry("Really Quit", 'q');
// create main "right click" menu
glutCreateMenu(menu);
glutAddSubMenu("Sub Menu", subMenu);
glutAddMenuEntry("Quit", 'q');
glutAttachMenu(GLUT_RIGHT_BUTTON);
initGL(500,500);
glutMainLoop();
return 0;
}
حالا نمیدونم چرا وقتی رست کلید کنم. این بخش از برنامه اجرا نمیشه..
void menu(int op) {
switch(op) {
case'Q':
case'q':
exit(0);
case'b':glBegin(GL_QUADS);
glVertex3f(-1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f, 1.0f, 0.0f);
glVertex3f( 1.0f,-1.0f, 0.0f);
glVertex3f(-1.0f,-1.0f, 0.0f);
glEnd();glFlush();
}}
قسمت b رو اجرا نمیکنه.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]