
Опытный
 
Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина
Репутация: -1 Всего: 5
|
Код | #include "stdafx.h" #include <windows.h> #include <gl/gl.h> #include <gl/glu.h> #include <gl/glut.h> #include <gl/glaux.h> #pragma comment(lib,"GLAUX.LIB")
HWND hw; GLfloat ang=0; GLfloat amb[]={1.0f,1.0f,1.0f,1.0f}; GLuint texture[2]; GLfloat posz=-5.0f; GLint st=1; int resolutHEIGHT; int resolutWIDTH;
GLfloat wWidth,wHeight; ///////////////////////////////////////////////////////////////////////////// GLuint filter=0; // Èñïîëüçóåìûé ôèëüòð äëÿ òåêñòóð GLuint fogMode[]= { GL_EXP, GL_EXP2, GL_LINEAR }; // Õðàíèò òðè òèïà òóìàíà GLuint fogfilter= 0; // Òèï èñïîëüçóåìîãî òóìàíà GLfloat fogColor[4]= {0.5f, 0.5f, 0.5f, 1.0f}; //////////////////////////////////////////////////////////////////////////////
GLvoid loadTexture(){ AUX_RGBImageRec *texture1; texture1 = auxDIBImageLoad("pic/pic1.bmp"); glGenTextures(1, &texture[0]); glBindTexture(GL_TEXTURE_2D, texture[0]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data); texture1 = auxDIBImageLoad("pic/pic2.bmp"); glGenTextures(1, &texture[1]); glBindTexture(GL_TEXTURE_2D, texture[1]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1->sizeX, texture1->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1->data);
}
void SetupRC(void){ glClearColor(0.5f,0.5f,0.5f,1.0f); loadTexture(); glEnable(GL_TEXTURE_2D); glDepthFunc(GL_LESS); glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH);
///////////fog/////////////// glEnable(GL_FOG); // Âêëþ÷àåò òóìàí (GL_FOG) glFogi(GL_FOG_MODE, fogMode[2]);// Âûáèðàåì òèï òóìàíà glFogfv(GL_FOG_COLOR, fogColor); // Óñòàíàâëèâàåì öâåò òóìàíà glFogf(GL_FOG_DENSITY, 0.35f); // Íàñêîëüêî ãóñòûì áóäåò òóìàí glHint(GL_FOG_HINT, GL_NICEST); // Âñïîìîãàòåëüíàÿ óñòàíîâêà òóìàíà glFogf(GL_FOG_START, 6.5f); // Ãëóáèíà, ñ êîòîðîé íà÷èíàåòñÿ òóìàí glFogf(GL_FOG_END, 9.5f); // Ãëóáèíà, ãäå òóìàí çàêàí÷èâàåòñÿ.
} void box(){ glBindTexture(GL_TEXTURE_2D, texture[1]); glBegin(GL_QUADS);
// Ïåðåäíÿÿ ãðàíü glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Íèç ëåâî glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Íèç ïðàâî glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); // Âåðõ ïðàâî glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Âåðõ ëåâî glEnd();
glBindTexture(GL_TEXTURE_2D, texture[1]); glBegin(GL_QUADS); // Çàäíÿÿ ãðàíü glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); // Íèç ïðàâî glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); // Âåðõ ïðàâî glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); // Âåðõ ëåâî glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); // Íèç ëåâî glEnd(); glBindTexture(GL_TEXTURE_2D, texture[1]); glBegin(GL_QUADS); // Âåðõíÿÿ ãðàíü glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); // Âåðõ ëåâî glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Íèç ëåâî glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f); // Íèç ïðàâî glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); // Âåðõ ïðàâî glEnd(); glBindTexture(GL_TEXTURE_2D, texture[1]); glBegin(GL_QUADS);// Íèæíÿÿ ãðàíü glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); // Âåðõ ïðàâî glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f); // Âåðõ ëåâî glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Íèç ëåâî glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Íèç ïðàâî
// Ïðàâàÿ ãðàíü glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); // Íèç ïðàâî glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); // Âåðõ ïðàâî glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); // Âåðõ ëåâî glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Íèç ëåâî glEnd(); glBindTexture(GL_TEXTURE_2D, texture[1]); glBegin(GL_QUADS);// Íèæíÿÿ ãðàíü // Ëåâàÿ ãðàíü glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); // Íèç ëåâî glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Íèç ïðàâî glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Âåðõ ïðàâî glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); // Âåðõ ëåâî
glEnd(); }
void drawBox(){
///////////// glPushMatrix(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,GLfloat (resolutWIDTH)/GLfloat(resolutHEIGHT),0.01f,100.0f); //MessageBox(hw,"ttt","ttt",0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glPopMatrix(); glPushMatrix(); glTranslatef(0.0f,0.0f,posz); glRotatef(ang,1.0f,1.0f,1.0f); glColor3d(0.5, 0.5, 0.0); box(); glPopMatrix(); switch(st){ case 1:posz-=0.0035f; if (posz<-11.0f ){st=2;} ang+=0.5; break; case 2:posz+=0.0035f; if (posz>0.0f ){st=1;} ang-=0.5; break;
} //////////////////
}
void drawOrtho(){ GLfloat asp; asp=resolutWIDTH/resolutHEIGHT; glPushMatrix(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); if (resolutWIDTH<resolutHEIGHT){
glOrtho(-100.0f,100.0f,-100/asp,100/asp,1.0,-1.0); } else glOrtho(-100.0*asp,100.0*asp,-100,100,1.0,-1.0);
glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glPopMatrix(); static float x; static float y; static stx=1; static sty=1; glPushMatrix();
glColor3d(1, 1, 0); glTranslatef(x,y,-1.0f); glBegin(GL_QUADS); glVertex2i(10, 10); glVertex2i(100, 10); glVertex2i(100, 700); glVertex2i(10, 700); glEnd();
glPopMatrix(); switch(stx){ case 1:x-=0.1; if (x<-100.0f ){stx=2;} break;
case 2: x+=0.1; if (x>100.0f ){stx=1;} break; };
switch(sty){ case 1:y-=0.5; if (y<-100.0f ){sty=2;} break;
case 2: y+=0.5; if (y>100.0f ){sty=1;} break; };
}
void RenderScene(void){ glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); drawBox(); drawOrtho(); glutSwapBuffers(); glutPostRedisplay(); }
void changeSize(GLsizei w,GLsizei h){ resolutWIDTH=w ; resolutHEIGHT = h; GLfloat asp;
if (h==0) h=1;
glViewport(0,0,w,h); asp= GLfloat (w)/GLfloat (h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,asp,0.1f,100.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity();
}
void main(void) { HWND hdwind = GetDesktopWindow(); HDC hdescDc = GetDC(hdwind); resolutWIDTH=GetDeviceCaps(hdescDc,HORZRES); resolutHEIGHT = GetDeviceCaps(hdescDc,VERTRES); int xx= (resolutWIDTH/2)-400; int yy= (resolutHEIGHT/2)-300;
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB |GLUT_DEPTH); glutInitWindowSize(800,600); glutInitWindowPosition(xx,yy); glutCreateWindow("VSL_Game studio"); //glutFullScreen(); glutReshapeFunc(changeSize); glutDisplayFunc(RenderScene); SetupRC(); glutMainLoop(); }
|
Просто скопируй этот код! Работает как часы
--------------------
Иногда переменная - это просто переменная
|