ayask
عضو جدید
با سلام در این تاپیک قصد دارم که چند کد مربوط به openGl رو براتون بزارم.
اولیش رسم یک پنکه است که با کلید 1 و 2 و 3 سرعتش زیاد و کم میشه.
و دومین کد مربوط به طراحی یک صندلی است
اولیش رسم یک پنکه است که با کلید 1 و 2 و 3 سرعتش زیاد و کم میشه.
کد:
#include<windows.h>
#include<GL/glut.h>
int w = 0;
void init(void)
{
glClearColor(0.5, 0.5, 0.75, 0.0);
glShadeModel(GL_SMOOTH);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
GLUquadricObj *qobj;
qobj = gluNewQuadric(); // DESINE DAYERE
glColor3f(0.5,0.25,0);
gluDisk(qobj, 0.10, 0.25, 50, 2); // DESINE DAYERE
glRotatef( w,0,0,1);
for(int i = 0; i < 10000000; i++);
glLineWidth(10.0);
glBegin(GL_LINES);
glColor3f(0.5,0,0);
glVertex3f(-02.25,-01.25,-01.25);
glColor3f(0.5,0.5,0.35);
glVertex3f(0,0,0);
glEnd();
glBegin(GL_LINES);
glColor3f(0.5,0,0);
glVertex3f(0,01.5,01.5);
glColor3f(0.5,0.5,0.35);
glVertex3f(0,0,0);
glEnd();
glBegin(GL_LINES);
glColor3f(0.5,0,0);
glVertex3f(01.5,0,01.5);
glColor3f(0.5,0.5,0.35);
glVertex3f(0,0,0);
glEnd();
glLineWidth(1.0);
glFlush();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 2 , 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 05.0, 0, 0, -200.0, 0.0, 5.0, 5.0);
}
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case '3':
w = (w + (30)) % 360;
glutIdleFunc(display);
break;
case '2':
w = (w + (15)) % 360;
glutIdleFunc(display);
break;
case '1':
w = (w + (5)) % 360;
glutIdleFunc(display);
break;
case 's':
w = 0;
glutPostRedisplay();
break;
case 'x':
exit(1);
break;
case 'X':
exit(2);
default:
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500, 500);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMainLoop();
return 0;
}
و دومین کد مربوط به طراحی یک صندلی است
کد:
#include<windows.h>
#include<GL\glut.h>
void dis()
{
glClear(GL_COLOR_BUFFER_BIT);
glShadeModel(GL_SMOOTH);
glLineWidth(4.0);
glBegin(GL_QUADS);
glColor3f(0.5,0.5,1);
glVertex2f(-0.25,0.9);
glColor3f(0.5,0.5,0);
glVertex2f(0.39,0.8);
glColor3f(0.5,0,1);
glVertex2f(0.3,0.35);
glColor3f(0,0.5,1);
glVertex2f(-0.32,0.45);
glEnd();
glBegin(GL_LINES);
glColor3f(0.5,0.5,1);
glVertex2f(-0.39,0);
glColor3f(0.5,0.5,0);
glVertex2f(-0.39,-0.7);
glEnd();
glBegin(GL_QUADS);
glColor3f(0.5,0.5,1);
glVertex2f(-0.4,0);
glColor3f(0.5,0.5,0);
glVertex2f(0.2,-0.1);
glColor3f(0.5,0,1);
glVertex2f(-0.5,-0.3);
glColor3f(0,0.5,1);
glVertex2f(-0.98,-0.1);
glEnd();
glBegin(GL_LINES);
glColor3f(0.5,0.5,1);
glVertex2f(-0.31,0.45);
glColor3f(0.5,0.5,0);
glVertex2f(-0.39,0);
glEnd();
glBegin(GL_LINES);
glColor3f(0.5,0.5,1);
glVertex2f(0.29,0.35);
glColor3f(0.5,0.5,0);
glVertex2f(0.19,-0.1);
glEnd();
glBegin(GL_LINES);
glColor3f(0.5,0.5,1);
glVertex2f(0.19,-0.1);
glColor3f(0.5,0.5,0);
glVertex2f(0.19,-0.8);
glEnd();
//
glBegin(GL_LINES);
glColor3f(0.5,0.5,1);
glVertex2f(-0.49,-0.3);
glColor3f(0.5,0.5,0);
glVertex2f(-0.49,-0.93);
glEnd();
glBegin(GL_LINES);
glColor3f(0.5,0.5,1);
glVertex2f(-0.97,-0.1);
glColor3f(0.5,0.5,0);
glVertex2f(-0.97,-0.91);
glEnd();
glFlush();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 2 , 20.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 03.0, 0.0, 0.0, -100.0, 0.0, 5.0, 5.0);
}
void main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowSize(200,300);
glutInitWindowPosition(100,50);
glutCreateWindow("Test Program");
glClearColor(0.64,0.67,0.88,0);
glutReshapeFunc(reshape);
glutDisplayFunc(dis);
glutMainLoop();
}
واسه اونایی که با مفهوم openGl آشنا نیستند باید بگم که جهت طراحی برنامه ها و اشکال گرافیکی از این استفاده میشه ،مثلا 3dmax با این نوشته شده.