-
جمعه 25 اردیبهشت 1394, 18:04 عصر
#23
کاربر جدید
نقل قول: آموزش OpenGL
سلام ....میشه این برنامه رو به من توضیح بدین؟؟؟
ممنون میشم
#include <windows.h>
#include <gl/Gl.h>
#include <gl/glut.h>
int flag=0;
int rx,ry;
int xw,yw,selector=4,selector2=3;
float rr,gg,bb,ff=4.0;
//<<<<<<<<<<<<<<<<<<<<<<<< myDisplay >>>>>>>>>>>>>>>>>
void myDisplay(void)
{
glColor3f(0.670f, 0.776f, 0.878f);
glRectf(0,0,xw,40);
if(ry<=40)
{ if(rx>=10 && rx<=30)
{
selector=1;
rr=1;
gg=0;
bb=0;
}
if(rx>=40 && rx<=60)
{
selector=2;
rr=0;
gg=1;
bb=0;
}
if(rx>=70 && rx<=90)
{
selector=3;
rr=0;
gg=0;
bb=1;
}
if(rx>=100 && rx<=120)
{
selector=4;
rr=0;
gg=0;
bb=0;
}
if(rx>=155 && rx<=172)
{
selector2=1;
ff=8;
}
if(rx>=173 && rx<=189)
{
selector2=2;
ff=6;
}
if(rx>=189 && rx<=203)
{
selector2=3;
ff=4;
}
if(rx>=204 && rx<=215)
{
selector2=4;
ff=2;
}
}
if(selector==1)
{
glColor3f(0.70f, 0.70f, 0.70f);
glRectf(5,5,35,35);
}
if(selector==2)
{
glColor3f(0.70f, 0.70f, 0.70f);
glRectf(35,5,65,35);
}
if(selector==3)
{
glColor3f(0.70f, 0.70f, 0.70f);
glRectf(65,5,95,35);
}
if(selector==4)
{
glColor3f(0.70f, 0.70f, 0.70f);
glRectf(95,5,125,35);
}
if(selector2==1)
{
glColor3f(0.70f, 0.70f, 0.70f);
glRectf(155,11,172,29);
}
if(selector2==2)
{
glColor3f(0.70f, 0.70f, 0.70f);
glRectf(173,11,189,29);
}
if(selector2==3)
{
glColor3f(0.70f, 0.70f, 0.70f);
glRectf(189,11,203,29);
}
if(selector2==4)
{
glColor3f(0.70f, 0.70f, 0.70f);
glRectf(203,11,215,29);
}
glColor3f(1.0f, 0.0f, 0.0f);
glRectf(10,10,30,30);
glColor3f(0.0f, 1.0f, 0.0f);
glRectf(40,10,60,30);
glColor3f(0.0f, 0.0f, 1.0f);
glRectf(70,10,90,30);
glColor3f(0.0f, 0.0f, 0.0f);
glRectf(100,10,120,30);
glRectf(150,0,151,40);
glRectf(160,16,168,24);
glRectf(178,17,184,23);
glRectf(194,18,198,22);
glRectf(208,19,210,21);
glColor3f(rr, gg, bb);
glPointSize(ff);
if (flag==1 && ry>40)
{
glBegin(GL_POINTS);
glVertex2i(rx, ry);
glEnd();
}
glFlush();
}
void myMouse(int button, int state, int x, int y)
{
if(button == GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
flag=1;
rx=x;
ry=yw-y;
}
glutPostRedisplay();
}
void myMouseMotion(int x, int y)
{
flag=1;
rx=x;
ry=yw-y;
glutPostRedisplay();
}
void myKeyboard(unsigned char ch, int x, int y)
{
switch (ch)
{
case 'e':
exit (-1);
case 'a':
flag=0;
glClear(GL_COLOR_BUFFER_BIT); // clear the screen
break;
}
glutPostRedisplay();
}
void ChangeSize(GLsizei w, GLsizei h)
{
yw=h;
xw=w;
glClearColor(1.0,1.0,1.0,0.0);
// glColor3f(0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glViewport(0,0,w,h);
gluOrtho2D(0.0, w, 0.0, h);
}
//<<<<<<<<<<<<<<<<<<<<<<<< main >>>>>>>>>>>>>>>>>>>>>>
void main(int argc, char** argv)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(640,480);
glutCreateWindow("board");
glutDisplayFunc(myDisplay);
glutReshapeFunc(ChangeSize);
glutMouseFunc(myMouse);
glutKeyboardFunc(myKeyboard);
glutMotionFunc (myMouseMotion);
glutMainLoop();
}
برچسب های این تاپیک
قوانین ایجاد تاپیک در تالار
- شما نمی توانید تاپیک جدید ایجاد کنید
- شما نمی توانید به تاپیک ها پاسخ دهید
- شما نمی توانید ضمیمه ارسال کنید
- شما نمی توانید پاسخ هایتان را ویرایش کنید
-
قوانین سایت