Programalama > C++

Etiketler: c++, tan, ekran, koruyucu

Ort. 0
Puan ver:
#include <windows.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
#include <stdio.h>
#include <math.h>

HDC			hDC=NULL;
HGLRC		hRC=NULL;
HWND		hWnd=NULL;
HINSTANCE	hInstance;

bool	keys[256];
bool	active=TRUE;
bool	fullscreen=TRUE;

GLint   base,loop;
GLuint  texture[14];
GLUquadricObj *Obiekt1;

GLfloat roll,roll2;
GLfloat step=0.01f;
GLfloat step2=0.3f;
GLfloat rotate, rotateobiekt1,rotateobiekt2;
GLfloat angle,rotsat;
GLfloat RotateWenus;
GLfloat x,y;

GLfloat LightAmbient[]=		{ 0.05f, 0.05f, 0.05f, 1.0f };
GLfloat LightDiffuse[]=		{ 0.8f, 0.8f, 0.8f, 1.0f };
GLfloat LightPosition[]=	{ 10.0f, -10.0f, 10.0f, 1.0f };
GLfloat LightAmbient2[]=		{ 0.9f, 0.9f, 0.9f, 1.0f };

GLfloat	roo;
GLfloat	ro; 
GLfloat	ro2;
GLfloat	alpha;
GLfloat	alphaplus=0.0003f;

char *text_display[7] =
{
	"          Ekran koruyucu tansalic@walla.com",
	"           Hepiniz hos geldiniz...",
	"     Bu proje benim ilk ekran koruyucu calismamdir",
    "     umarim begenir dostlarinizada hediye edersiniz",
    "                   SAYGILARIMLA !!!",
    "    tansalic@walla.com",
    ""
};
int		  Tekst = 0;
int	   TextSync = 0;

LRESULT	CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

void Build_font(void)
{
	int i;
	float cx;											
	float cy;											
	base = glGenLists(256);							
	glBindTexture(GL_TEXTURE_2D, texture[4]);			
	for (i=0 ; i<256 ; i++) {                          
		cx = float(i%16)/16.0f;							
		cy = float(i/16)/16.0f;							
		glNewList(base+i,GL_COMPILE);					
			glBegin(GL_QUADS);							
				glTexCoord2f(cx,1-cy-0.0625f);			
				glVertex2i(0,0);						
				glTexCoord2f(cx+0.0625f,1-cy-0.0625f);	
				glVertex2i(16,0);						
				glTexCoord2f(cx+0.0625f,1-cy);			
				glVertex2i(16,16);						
				glTexCoord2f(cx,1-cy);					
				glVertex2i(0,16);						
			glEnd();								
			glTranslated(10,0,0);						
		glEndList();									
	}													
}


void KillFont(void)
{
	glDeleteLists(base, 256);							
}

void glPrint(GLint x, GLint y, char* string, int set)
{
	if (set > 1) set = 1;
	glBindTexture(GL_TEXTURE_2D, texture[4]);			
	glDisable(GL_DEPTH_TEST);							
	glMatrixMode(GL_PROJECTION);						
	glPushMatrix();										
	glLoadIdentity();									
	glOrtho(0,640,0,480,-100,100);						
	glMatrixMode(GL_MODELVIEW);							
	glPushMatrix();										
	glLoadIdentity();								
	glTranslated(x,y,0);								
	glListBase(base-32+(128*set));					
	glCallLists(strlen(string),GL_BYTE,string);			
	glMatrixMode(GL_PROJECTION);						
	glPopMatrix();										
	glMatrixMode(GL_MODELVIEW);							
	glPopMatrix();										
	glEnable(GL_DEPTH_TEST);							
}
void Swiatlo(void)
{
    glLightfv(GL_LIGHT0, GL_AMBIENT, LightAmbient2);		

    glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient);		
    glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse);		
    glLightfv(GL_LIGHT1, GL_POSITION,LightPosition);	
    glEnable(GL_LIGHT0);
    glEnable(GL_LIGHT1);								
    glEnable(GL_LIGHT2);
    glEnable(GL_LIGHTING);
    glEnable(GL_COLOR_MATERIAL);
}

AUX_RGBImageRec *LoadBMP(char *Filename)                                      
{
        FILE *File=NULL;
        if (!Filename)                                                         
        {
                return NULL;                                                   
        }
        File=fopen(Filename,"r");
        if (File)                                                               
        {
            fclose(File);                                                 
            return auxDIBImageLoad(Filename);                              
        }
    return NULL;
}
int LoadTextures()
{
    int Status = FALSE;
    AUX_RGBImageRec *TextureImage[14];
    memset(TextureImage, 0, sizeof(void *)*14);
    if ( (TextureImage[0]=LoadBMP("kosmos.bmp")) &&
         (TextureImage[1]=LoadBMP("belka.bmp"))  &&
         (TextureImage[2]=LoadBMP("ziemia.bmp"))&&         
		 (TextureImage[3]=LoadBMP("ksiezyc.bmp"))&&
         (TextureImage[4]=LoadBMP("fonty.bmp"))  &&
         (TextureImage[5]=LoadBMP("mars.bmp")) &&         
		 (TextureImage[6]=LoadBMP("wenus.bmp")) &&         
		 (TextureImage[7]=LoadBMP("merkury.bmp")) &&         
		 (TextureImage[8]=LoadBMP("satelitemaska.bmp")) &&
         (TextureImage[9]=LoadBMP("satelite.bmp")) &&
		 (TextureImage[10]=LoadBMP("saturnmaska.bmp")) &&
		 (TextureImage[11]=LoadBMP("saturn.bmp")) &&
		 (TextureImage[12]=LoadBMP("space.bmp")) &&
		 (TextureImage[13]=LoadBMP("sun.bmp")))
    {
        Status=TRUE;

        glGenTextures(14, &texture[0]);                                  
        for(loop=0;loop<14;loop++)
        {
            glBindTexture(GL_TEXTURE_2D, texture[loop]);
        
            gluBuild2DMipmaps(GL_TEXTURE_2D, 3,TextureImage[loop]->sizeX, TextureImage[loop]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[loop]->data);
            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
            glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
        }
        for(loop=0;loop<14;loop++)
        {
            if (TextureImage[loop])                                                
            {
                if (TextureImage[loop]->data)                                     
                    free(TextureImage[loop]->data);                           
            free(TextureImage[loop]);                                          
            }
        }
    }
    return Status;
}

GLvoid ReSizeGLScene(GLsizei width, GLsizei height)		
{
	if (height==0)										
	{
		height=1;										
	}

	glViewport(0,0,width,height);						

	glMatrixMode(GL_PROJECTION);						
	glLoadIdentity();									
	gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
	glMatrixMode(GL_MODELVIEW);							
	glLoadIdentity();									
}

int InitGL(GLvoid)										
{
    if(!LoadTextures())
        return FALSE;
    Swiatlo();
    Build_font();

	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);				
	glClearDepth(1.0f);									
	glEnable(GL_DEPTH_TEST);							
    glShadeModel(GL_SMOOTH);
    glEnable(GL_TEXTURE_2D);
  	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);	
    glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);

    Obiekt1=gluNewQuadric();
    gluQuadricTexture(Obiekt1, GLU_TRUE);
    gluQuadricDrawStyle(Obiekt1, GLU_FILL);  

	return TRUE;										
}
 
GLint DrawGLScene(GLvoid)									
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	
    glLoadIdentity();
    gluLookAt(0,0,10, 0,0,0, 0,1,0);

	
	
	glDisable(GL_LIGHTING);
    glTranslatef(0,0,-1);
    glRotatef(20,-1,0,0);
    glRotatef(rotate,0,0,1);
    glRotatef(rotate, 0,1,0);
	
    glBindTexture(GL_TEXTURE_2D, texture[0]);
    glBegin(GL_QUADS);
        glTexCoord2f(0.0f , roll + 0.0f);  glVertex3f(-10.1f, -10.1f, 0.0);
        glTexCoord2f(6.0f , roll + 0.0f);  glVertex3f(10.1f,  -10.1f, 0.0);
        glTexCoord2f(6.0f, roll + 6.0f);   glVertex3f(10.1f,   10.1f, 0.0);
        glTexCoord2f(0.0f, roll + 6.0f);   glVertex3f(-10.1f,  10.1f, 0.0);
    glEnd();
	
	glEnable(GL_LIGHTING);
	


    glLoadIdentity();
    glBindTexture(GL_TEXTURE_2D, texture[5]);
    glTranslatef(-2.6f,-1.8f,-5);
    glRotatef(90,1,0,0);
    glRotatef(rotateobiekt2,0,0,1);
    gluSphere(Obiekt1, 0.9, 20,20);	
	

	
    glLoadIdentity();
    glTranslatef(4.5,3.5,-10);
    glBindTexture(GL_TEXTURE_2D, texture[7]);
    glRotatef(rotateobiekt2,1,1,0);
    gluSphere(Obiekt1, 0.1,20,20);
	
    glLoadIdentity();
    glBlendFunc(GL_SRC_ALPHA, GL_ONE);
    glEnable(GL_BLEND);
    glBindTexture(GL_TEXTURE_2D, texture[1]);
    glTranslatef(0,0,-4);
    glTranslatef(0,-1.5,0);

    glDisable(GL_LIGHT1);
    glEnable(GL_LIGHT0);


    glBegin(GL_QUADS);
        glTexCoord2f(-roll2 +0.0f ,  0.0);  glVertex3f(-3.1f, -0.2f, 0.0);
        glTexCoord2f(-roll2 +1.0f ,  0.0);  glVertex3f(3.1f,  -0.2f, 0.0);
        glTexCoord2f(-roll2 +1.0f,   1.0);   glVertex3f(3.1f,   0.2f, 0.0);
        glTexCoord2f(-roll2 +0.0f,   1.0);   glVertex3f(-3.1f,  0.2f, 0.0);
    glEnd();

    glPrint(100,20,text_display[Tekst],1);

    glDisable(GL_LIGHT0);
    glEnable(GL_LIGHT1);

    glDisable(GL_BLEND);
    glBindTexture(GL_TEXTURE_2D, texture[2]);
    glTranslatef(0.0f,1.3f, -4.0f);
    glRotatef(rotateobiekt1,0,1,0);
    glRotatef(-75,1,0,0);
    gluSphere(Obiekt1,0.7,20,20);

    glTranslatef(1,0,0.5);
    glBindTexture(GL_TEXTURE_2D, texture[3]);
    glRotatef(rotateobiekt1,1,1,1);
    gluSphere(Obiekt1,0.1,20,20);
	
	glLoadIdentity();
	glDisable(GL_LIGHTING);
	glTranslatef(0.60f, 0.35f,-2.8f);
	glRotatef(20,0,0,1);

	glDisable(GL_DEPTH_TEST);
	glEnable(GL_BLEND);
	glBlendFunc(GL_DST_COLOR, GL_ZERO);
	glBindTexture(GL_TEXTURE_2D, texture[10]);
	glScalef(0.1f,0.1f,0.1f);
	glBegin(GL_QUADS);
        glTexCoord2f(0.0 ,  0.0);  glVertex3f(-1.0, -1.0, 0.0);
        glTexCoord2f(1.0 ,  0.0);  glVertex3f(1.0,  -1.0, 0.0);
        glTexCoord2f(1.0,   1.0);   glVertex3f(1.0,   1.0, 0.0);
        glTexCoord2f(0.0,   1.0);   glVertex3f(-1.0,  1.0, 0.0);
    glEnd();

	glBlendFunc(GL_ONE, GL_ONE);

	
	glBindTexture(GL_TEXTURE_2D, texture[11]);
    glBegin(GL_QUADS);
        glTexCoord2f(0.0 ,  0.0);  glVertex3f(-1.0, -1.0, 0.0);
        glTexCoord2f(1.0 ,  0.0);  glVertex3f(1.0,  -1.0, 0.0);
        glTexCoord2f(1.0,   1.0);   glVertex3f(1.0,   1.0, 0.0);
        glTexCoord2f(0.0,   1.0);   glVertex3f(-1.0,  1.0, 0.0);
    glEnd();
	glEnable(GL_DEPTH_TEST);
	glDisable(GL_BLEND);
	glEnable(GL_LIGHTING);
	
	glLoadIdentity();
	glDisable(GL_LIGHTING);
	glTranslatef(-0.7f,0.5f,-3.0f);
	glRotatef(rotsat,0,0,1);

	glDisable(GL_DEPTH_TEST);
	glEnable(GL_BLEND);
	glBlendFunc(GL_DST_COLOR, GL_ZERO);
	glBindTexture(GL_TEXTURE_2D, texture[8]);
	glScalef(0.1f,0.1f,0.1f);
	glBegin(GL_QUADS);
        glTexCoord2f(0.0 ,  0.0);  glVertex3f(-1.0, -1.0, 0.0);
        glTexCoord2f(1.0 ,  0.0);  glVertex3f(1.0,  -1.0, 0.0);
        glTexCoord2f(1.0,   1.0);   glVertex3f(1.0,   1.0, 0.0);
        glTexCoord2f(0.0,   1.0);   glVertex3f(-1.0,  1.0, 0.0);
    glEnd();

	glBlendFunc(GL_ONE, GL_ONE);

	glBindTexture(GL_TEXTURE_2D, texture[9]);
    glBegin(GL_QUADS);
        glTexCoord2f(0.0 ,  0.0);  glVertex3f(-1.0, -1.0, 0.0);
        glTexCoord2f(1.0 ,  0.0);  glVertex3f(1.0,  -1.0, 0.0);
        glTexCoord2f(1.0,   1.0);   glVertex3f(1.0,   1.0, 0.0);
        glTexCoord2f(0.0,   1.0);   glVertex3f(-1.0,  1.0, 0.0);
    glEnd();
	glEnable(GL_DEPTH_TEST);
	glDisable(GL_BLEND);
	glEnable(GL_LIGHTING);

	glLoadIdentity();
	
	glTranslatef(1.8f, 1.0f, -8);
	
	glDisable(GL_LIGHTING);
	glEnable(GL_BLEND);
	glColor4f(1,1,1, alpha);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE);
	
	glRotatef(ro2,0,0,1);
	glBindTexture(GL_TEXTURE_2D, texture[12]);
    glBegin(GL_QUADS);
        glTexCoord2f(0.0 ,  0.0);  glVertex3f(-1.0, -1.0, 0.0);
        glTexCoord2f(1.0 ,  0.0);  glVertex3f(1.0,  -1.0, 0.0);
        glTexCoord2f(1.0,   1.0);   glVertex3f(1.0,   1.0, 0.0);
        glTexCoord2f(0.0,   1.0);   glVertex3f(-1.0,  1.0, 0.0);
    glEnd();
	
	glRotatef(ro,0,0,1);
	glBegin(GL_QUADS);
        glTexCoord2f(0.0 ,  0.0);  glVertex3f(-1.0, -1.0, 0.0);
        glTexCoord2f(1.0 ,  0.0);  glVertex3f(1.0,  -1.0, 0.0);
        glTexCoord2f(1.0,   1.0);   glVertex3f(1.0,   1.0, 0.0);
        glTexCoord2f(0.0,   1.0);   glVertex3f(-1.0,  1.0, 0.0);
    glEnd();

	glDisable(GL_BLEND);	
	glColor4f(1,1,1,1);

	
	alpha+=alphaplus;

	if(alpha>0.5)
		alphaplus=-alphaplus;
	if(alpha<0.0)
		alphaplus=-alphaplus;

	ro2+=0.1f;
	ro+=0.05f;

	glLoadIdentity();	
	glTranslatef(-0.7f, 0.7f, -1 );
	
	glDisable(GL_LIGHTING);
	glEnable(GL_BLEND);
	
	glBlendFunc(GL_SRC_ALPHA, GL_ONE);
	glColor4f(0.9f, 0.1f, 0.9f, 1);
	
	glBindTexture(GL_TEXTURE_2D, texture[13]);
    glBegin(GL_QUADS);
        glTexCoord2f(0.0 ,  0.0);  glVertex3f(-1.0, -1.0, 0.0);
        glTexCoord2f(1.0 ,  0.0);  glVertex3f(1.0,  -1.0, 0.0);
        glTexCoord2f(1.0,   1.0);   glVertex3f(1.0,   1.0, 0.0);
        glTexCoord2f(0.0,   1.0);   glVertex3f(-1.0,  1.0, 0.0);
    glEnd();
	glColor4f(1,1,1,1);
	glDisable(GL_BLEND);
	
	glLoadIdentity();	
	
	glTranslatef(0.4f, -0.2f, -1);
	glScalef(0.2f, 0.2f, 0.2f);

	glDisable(GL_LIGHTING);
	glEnable(GL_BLEND);
	
	glBlendFunc(GL_SRC_ALPHA, GL_ONE);
	glColor4f(0.1f, 0.99f, 0.4f, 0.5f);
	
	glBindTexture(GL_TEXTURE_2D, texture[13]);
    
	glBegin(GL_QUADS);
        glTexCoord2f(0.0 ,  0.0);  glVertex3f(-1.0, -1.0, 0.0);
        glTexCoord2f(1.0 ,  0.0);  glVertex3f(1.0,  -1.0, 0.0);
        glTexCoord2f(1.0,   1.0);   glVertex3f(1.0,   1.0, 0.0);
        glTexCoord2f(0.0,   1.0);   glVertex3f(-1.0,  1.0, 0.0);
    glEnd();
	

	glRotatef(roo,0,0,1);
	
	glBindTexture(GL_TEXTURE_2D, texture[13]);
    glBegin(GL_QUADS);
        glTexCoord2f(0.0 ,  0.0);  glVertex3f(-1.0, -1.0, 0.0);
        glTexCoord2f(1.0 ,  0.0);  glVertex3f(1.0,  -1.0, 0.0);
        glTexCoord2f(1.0,   1.0);   glVertex3f(1.0,   1.0, 0.0);
        glTexCoord2f(0.0,   1.0);   glVertex3f(-1.0,  1.0, 0.0);
    glEnd();
	glColor4f(1,1,1,1);
	glDisable(GL_BLEND);
	

	roo+=0.1f;
	if(roo>360)
		roo=0.0f;	



	rotsat+=0.1f;
	if(rotsat>360)
		rotsat=0;


	RotateWenus+=0.2f;
    if(RotateWenus>360)
        RotateWenus=0;

    TextSync++;
	if (TextSync > 600)
	{
		TextSync = 0;
		Tekst++;
	}
    if (Tekst  > 6)
     	Tekst = 0;

    rotateobiekt1+=step2;
    rotateobiekt2+=0.05f;

    rotate+=step;
    if(rotate>12)
       step=-step;
    if(rotate<-12)
        step=-step;

    roll+=0.002f;
    if(roll>1.0f)
        roll-=1.0f;
    
	
    roll2+=0.0005f;

    if(roll2>1.0f)
        roll2-=1.0f;


    return TRUE;										
}



GLvoid KillGLWindow(GLvoid)								
{
    gluDeleteQuadric(Obiekt1);    
    KillFont();
	if (fullscreen)										
	{
		ChangeDisplaySettings(NULL,0);					
		ShowCursor(TRUE);								
	}

	if (hRC)											
	{
		if (!wglMakeCurrent(NULL,NULL))					
		{
			MessageBox(NULL,"Release Of DC And RC Failed.","Kapatma Hatası",MB_OK | MB_ICONINFORMATION);
		}

		if (!wglDeleteContext(hRC))						
		{
			MessageBox(NULL,"Release Rendering Context Failed.","Kapatma Hatası",MB_OK | MB_ICONINFORMATION);
		}
		hRC=NULL;										
	}

	if (hDC && !ReleaseDC(hWnd,hDC))					
	{
		MessageBox(NULL,"Release Device Context Failed.","Kapatma Hatası",MB_OK | MB_ICONINFORMATION);
		hDC=NULL;										
	}

	if (hWnd && !DestroyWindow(hWnd))					
	{
		MessageBox(NULL,"Could Not Release hWnd.","Kapatma Hatası",MB_OK | MB_ICONINFORMATION);
		hWnd=NULL;										
	}

	if (!UnregisterClass("OpenGL",hInstance))			
	{
		MessageBox(NULL,"Could Not Unregister Class.","Kapatma Hatası",MB_OK | MB_ICONINFORMATION);
		hInstance=NULL;									
	}

}


BOOL CreateGLWindow(char* title, int width, int height, int bits, bool fullscreenflag)
{
	GLuint		PixelFormat;			
	WNDCLASS	wc;						
	DWORD		dwExStyle;				
	DWORD		dwStyle;				
	RECT		WindowRect;			
	WindowRect.left=(long)0;			
	WindowRect.right=(long)width;		
	WindowRect.top=(long)0;				
	WindowRect.bottom=(long)height;		

	fullscreen=fullscreenflag;		

	hInstance			= GetModuleHandle(NULL);				
	wc.style			= CS_HREDRAW | CS_VREDRAW | CS_OWNDC;	
	wc.lpfnWndProc		= (WNDPROC) WndProc;					
	wc.cbClsExtra		= 0;									
	wc.cbWndExtra		= 0;									
	wc.hInstance		= hInstance;							
	wc.hIcon			= LoadIcon(NULL, IDI_WINLOGO);			
	wc.hCursor			= LoadCursor(NULL, IDC_ARROW);			
	wc.hbrBackground	= NULL;									
	wc.lpszMenuName		= NULL;									
	wc.lpszClassName	= "OpenGL";								

	if (!RegisterClass(&wc))									
	{
		MessageBox(NULL,"Failed To Register The Window Class.","Hata",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;											
	}
	
	if (fullscreen)												
	{
		DEVMODE dmScreenSettings;								
		memset(&dmScreenSettings,0,sizeof(dmScreenSettings));	
		dmScreenSettings.dmSize=sizeof(dmScreenSettings);		
		dmScreenSettings.dmPelsWidth	= width;				
		dmScreenSettings.dmPelsHeight	= height;				
		dmScreenSettings.dmBitsPerPel	= bits;					
		dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;

		
		if (ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL)
		{
			
			if (MessageBox(NULL,"The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?","NeHe GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES)
			{
				fullscreen=FALSE;		
			}
			else
			{
				
				MessageBox(NULL,"Program Şimdi Kapatılıyor.","Hata",MB_OK|MB_ICONSTOP);
				return FALSE;								
			}
		}
	}

	if (fullscreen)												
	{
		dwExStyle=WS_EX_APPWINDOW;								
		dwStyle=WS_POPUP;										
		ShowCursor(FALSE);										
	}
	else
	{
		dwExStyle=WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;			
		dwStyle=WS_OVERLAPPEDWINDOW;							
	}

	AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle);		
	
	if (!(hWnd=CreateWindowEx(	dwExStyle,							
								"OpenGL",							
								title,								
								dwStyle |							
								WS_CLIPSIBLINGS |					
								WS_CLIPCHILDREN,					
								0, 0,								
								WindowRect.right-WindowRect.left,	
								WindowRect.bottom-WindowRect.top,	
								NULL,								
								NULL,								
								hInstance,							
								NULL)))								
	{
		KillGLWindow();								
		MessageBox(NULL,"Pencere Oluşma Hatası.","Hata",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;								
	}

	static	PIXELFORMATDESCRIPTOR pfd=				
	{
		sizeof(PIXELFORMATDESCRIPTOR),				
		1,											
		PFD_DRAW_TO_WINDOW |						
		PFD_SUPPORT_OPENGL |						
		PFD_DOUBLEBUFFER,							
		PFD_TYPE_RGBA,								
		bits,										
		0, 0, 0, 0, 0, 0,							
		0,											
		0,											
		0,											
		0, 0, 0, 0,									
		16,											
		0,											
		0,											
		PFD_MAIN_PLANE,								
		0,											
		0, 0, 0										
	};

	if (!(hDC=GetDC(hWnd)))							
	{
		KillGLWindow();								
		MessageBox(NULL,"Can't Create A GL Device Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;								
	}

	if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd)))
	{
		KillGLWindow();								
		MessageBox(NULL,"Can't Find A Suitable PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;								
	}

	if(!SetPixelFormat(hDC,PixelFormat,&pfd))		
	{
		KillGLWindow();								
		MessageBox(NULL,"Can't Set The PixelFormat.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;								
	}

	if (!(hRC=wglCreateContext(hDC)))				
	{
		KillGLWindow();								
		MessageBox(NULL,"Can't Create A GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;								
	}

	if(!wglMakeCurrent(hDC,hRC))					
	{
		KillGLWindow();								
		MessageBox(NULL,"Can't Activate The GL Rendering Context.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;								
	}

	ShowWindow(hWnd,SW_SHOW);						
	SetForegroundWindow(hWnd);						
	SetFocus(hWnd);									
	ReSizeGLScene(width, height);					

	if (!InitGL())									
	{
		KillGLWindow();								
		MessageBox(NULL,"Initialization Failed.","ERROR",MB_OK|MB_ICONEXCLAMATION);
		return FALSE;								
	}

	return TRUE;									
}

LRESULT CALLBACK WndProc(	HWND	hWnd,			
							UINT	uMsg,			
							WPARAM	wParam,			
							LPARAM	lParam)			
{
	switch (uMsg)									
	{
		case WM_ACTIVATE:							
		{
			if (!HIWORD(wParam))				
			{
				active=TRUE;						
			}
			else
			{
				active=FALSE;						
			}

			return 0;								
		}

		case WM_SYSCOMMAND:							
		{
			switch (wParam)							
			{
				case SC_SCREENSAVE:					
				case SC_MONITORPOWER:				
				return 0;							
			}
			break;									
		}

		case WM_CLOSE:								
		{
			PostQuitMessage(0);						
			return 0;								
		}

		case WM_KEYDOWN:							
		{
			keys[wParam] = TRUE;					
			return 0;								
		}

		case WM_KEYUP:								
		{
			keys[wParam] = FALSE;					
			return 0;								
		}

		case WM_SIZE:								
		{
			ReSizeGLScene(LOWORD(lParam),HIWORD(lParam));  
			return 0;								
		}
	}

	
	return DefWindowProc(hWnd,uMsg,wParam,lParam);
}

int WINAPI WinMain(	HINSTANCE	hInstance,			
					HINSTANCE	hPrevInstance,		
					LPSTR		lpCmdLine,			
					int			nCmdShow)			
{
	MSG		msg;									
	BOOL	done=FALSE;								
	
	if (MessageBox(NULL,"Tam ekran Modunda Çalışsın mı?", "Tam Ekran Başlat?",MB_YESNO|MB_ICONQUESTION)==IDNO)
	{
		fullscreen=FALSE;							
	}

		if (!CreateGLWindow("tansalic@walla.com",640,480,16,fullscreen))
	{
		return 0;									
	}

	while(!done)									
	{
		if (PeekMessage(&msg,NULL,0,0,PM_REMOVE))	
		{
			if (msg.message==WM_QUIT)				
			{
				done=TRUE;							
			}
			else									
			{
				TranslateMessage(&msg);				
				DispatchMessage(&msg);				
			}
		}
		else										
		{
			
			if (active)								
			{
				if (keys[VK_ESCAPE])				
				{
					done=TRUE;						
				}
				else								
				{
					DrawGLScene();					
     				SwapBuffers(hDC);				
					
              	}
			}

			if (keys[VK_F1])						
			{
				keys[VK_F1]=FALSE;					
				KillGLWindow();						
				fullscreen=!fullscreen;				
				
				if (!CreateGLWindow("Kaidr@Kadir.com",640,480,16,fullscreen))
				{
					return 0;					
				}
			}
		}
	}


	KillGLWindow();									
	return (msg.wParam);							
}


kadir göksu 0 537 714 57 25
kadir göksu 0 537 714 57 25


Yorumlar                 Yorum Yaz
Bu hazır kod'a ilk yorumu siz yapın!
KATEGORİLER
ASP - 240
ASP.NET - 24
C# - 75
C++ - 174
CGI - 8
DELPHI - 247
FLASH - 49
HTML - 536
PASCAL - 246
PERL - 11
PHP - 160
WML - 9
XML - 2
Copyright © 2002 - 2024 Hazır Kod - Tüm Hakları Saklıdır.
Siteden yararlanırken gizlilik ilkelerini okumanızı tavsiye ederiz.
hazirkod.com bir İSOBİL projesidir.