rendered paste body/************************** * Includes * **************************/#include <windows.h>#include <gl/gl.h>#include "Drawer.hpp"/************************** * Function Declarations * **************************/LRESULT CALLBACK WndProc (HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam);void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC);void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC);/************************** * WinMain * **************************/int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int iCmdShow){ WNDCLASS wc; HWND hWnd; HDC hDC; HGLRC hRC; MSG msg; BOOL bQuit = FALSE; float theta = 0.0f; /* register window class */ wc.style = CS_OWNDC; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon (NULL, IDI_APPLICATION); wc.hCursor = LoadCursor (NULL, IDC_ARROW); wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH); wc.lpszMenuName = NULL; wc.lpszClassName = "GLSample"; RegisterClass (&wc); /* create main window */hWnd = CreateWindow("GLSample","OpenGL Sample",WS_CAPTION|WS_POPUPWINDOW|WS_VISIBLE,96,96,640,480,NULL,NULL,hInstance,NULL); /* enable OpenGL for the window */ EnableOpenGL (hWnd, &hDC, &hRC); //Drawer(float fScreeMaxX,float fScreenMaxY,float fScreenMinX,float fScreenMinY, // int iScreenX,int iScreenY,int iPixelSize); Drawer Simple(0.5f,0.5f,-0.5f,-0.5f,128,128,1); int iTime=0; /* program main loop */ while (!bQuit) { /* check for messages */ if (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE)) { /* handle or dispatch messages */ if (msg.message == WM_QUIT) { bQuit = TRUE; } else { TranslateMessage (&msg); DispatchMessage (&msg); } } else { /* OpenGL animation code goes here */ glClearColor (0.0f, 0.0f, 0.0f, 0.0f); glClear (GL_COLOR_BUFFER_BIT); glPushMatrix (); glRotatef (theta, 1.0f, 1.0f, 1.0f); //glBegin (GL_LINE_STRIP); Simple.Draw(iTime); //glEnd (); glPopMatrix (); SwapBuffers (hDC); theta = 45.0f; Sleep (1); iTime++; } } /* shutdown OpenGL */ DisableOpenGL (hWnd, hDC, hRC); /* destroy the window explicitly */ DestroyWindow (hWnd); return msg.wParam;}/******************** * Window Procedure * ********************/LRESULT CALLBACK WndProc (HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam){ switch (message) { case WM_CREATE: return 0; case WM_CLOSE: PostQuitMessage (0); return 0; case WM_DESTROY: return 0; case WM_KEYDOWN: switch (wParam) { case VK_ESCAPE: PostQuitMessage(0); return 0; } return 0; default: return DefWindowProc (hWnd, message, wParam, lParam); }}/******************* * Enable OpenGL * *******************/void EnableOpenGL (HWND hWnd, HDC *hDC, HGLRC *hRC){ PIXELFORMATDESCRIPTOR pfd; int iFormat; /* get the device context (DC) */ *hDC = GetDC (hWnd); /* set the pixel format for the DC */ ZeroMemory (&pfd, sizeof (pfd)); pfd.nSize = sizeof (pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; iFormat = ChoosePixelFormat (*hDC, &pfd); SetPixelFormat (*hDC, iFormat, &pfd); /* create and enable the render context (RC) */ *hRC = wglCreateContext( *hDC ); wglMakeCurrent( *hDC, *hRC );}/****************** * Disable OpenGL * ******************/void DisableOpenGL (HWND hWnd, HDC hDC, HGLRC hRC){ wglMakeCurrent (NULL, NULL); wglDeleteContext (hRC); ReleaseDC (hWnd, hDC);}/** * * * * * * targh next file starts!!! * * * **/#ifndef drawer_hpp#define drawer_hpp#include <gl/gl.h>#include <math.h>class Drawer{private: float fMinX; float fMinY; float fHeight; float fWidth; float fDistX; float fDistY; int iPixel; int iScreenHeight; int iScreenWidth; float fRadian; float fTimes;public: //Constructor Drawer(float fScreeMaxX,float fScreenMaxY,float fScreenMinX,float fScreenMinY, int iScreenX,int iScreenY,int iPixelSize); //Formulas float Wrangle(float fX, float fY,float fT); //Drawers void Draw(int iT);};Drawer::Drawer(float fScreenMaxX,float fScreenMaxY,float fScreenMinX,float fScreenMinY,int iScreenX, int iScreenY,int iPixelSize){ fMinX = fScreenMinX; fMinY = fScreenMinY; fHeight = fScreenMaxY - fScreenMinY; fWidth = fScreenMaxX - fScreenMinX; iPixel = iPixelSize; iScreenHeight = iScreenX; iScreenWidth = iScreenY; fDistX = fWidth/iScreenX; fDistY = fHeight/iScreenY; fRadian = 180.0f/ 3.14159265f; fTimes = 5;}float Drawer::Wrangle(float fX, float fY,float fT){ return cos(sqrt((fX+fT)*(fX+fT)+(fY+fT)*(fY+fT))/fRadian);}void Drawer::Draw(int iT){ int i = 0; while(i < iScreenHeight) { int j = 0; glBegin(GL_LINE_STRIP); while(j < iScreenWidth) { float fResult = Wrangle((float)(i-64)*fTimes,(float)(j-64)*fTimes,iT); glColor3f(0.0f,1.0f,0.0f); //glColor3f(Red,Green,Blue); //glColor3f ( 0.5f + fResult/2.0f , 0.0f,0.0f); glVertex3f(fMinX + (j * fDistX),fMinY + (i * fDistY), fResult/5); //glVertex2f(fMinX + (j * fDistX),fMinY + (i * fDistY)); j++; } glEnd(); i++; }}#endif