rendered paste body//Includes and Define's:#include <windows.h>#include <gl/gl.h>#include <gl/glu.h>#define TGGL_WINDOW_CAPTION "TheGeek's OpenGL Template"#define TGGL_WINDOW_CLASS_NAME "TheGeek_OpenGL"#define TGGL_WIDTH 800#define TGGL_HEIGHT 600typedef struct{ float x; float y; float z;}TGGL_Vertix;typedef struct{ float r; float g; float b;}TGGL_Color;typedef struct{ TGGL_Vertix v1; TGGL_Vertix v2; TGGL_Vertix v3; TGGL_Color color;}TGGL_Poly;//Function Definitions:LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM);void RenderPoly(TGGL_Poly);//Globals:char g_szClassName[] = TGGL_WINDOW_CLASS_NAME;HGLRC g_hrc;HDC g_hdc;UINT g_uTexture;//Functions:int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ WNDCLASSEX wndclassex; MSG msg; HWND hwnd; PIXELFORMATDESCRIPTOR pfd; int iFormat, iWindowWidth, iWindowHeight; RECT rcClient, rcWindow; HFILE hRawTexture; BYTE *pbData; DWORD dwBytesRead; ZeroMemory(&wndclassex, sizeof(wndclassex)); wndclassex.cbSize = sizeof(WNDCLASSEX); wndclassex.style = CS_HREDRAW | CS_VREDRAW; wndclassex.lpfnWndProc = WindowProc; wndclassex.hInstance = hInstance; wndclassex.hIcon = LoadIcon(NULL, IDI_APPLICATION); wndclassex.hIconSm = LoadIcon(NULL, IDI_APPLICATION); wndclassex.hCursor = LoadCursor(NULL, IDC_ARROW); wndclassex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wndclassex.lpszClassName = g_szClassName; if(!RegisterClassEx(&wndclassex)){ char szError[150] = "Line %d: Class registration failed."; sprintf(szError, szError, __LINE__ - 2); MessageBox(NULL, szError, "Fatal Error", MB_OK | MB_ICONERROR); return 0; } hwnd = CreateWindowEx(WS_EX_APPWINDOW, g_szClassName, TGGL_WINDOW_CAPTION, WS_CLIPSIBLINGS | WS_CLIPCHILDREN | WS_MINIMIZEBOX | WS_SYSMENU, CW_USEDEFAULT, CW_USEDEFAULT, TGGL_WIDTH, TGGL_HEIGHT, NULL, NULL, hInstance, NULL); if(hwnd == NULL){ char szError[150] = "Line %d: Window creation failed."; sprintf(szError, szError, __LINE__ - 3); MessageBox(NULL, szError, "Fatal Error", MB_OK | MB_ICONERROR); return 0; } //Adjust window dimensions GetWindowRect(hwnd, &rcWindow); GetClientRect(hwnd, &rcClient); iWindowWidth = ((rcWindow.right - rcWindow.left) - rcClient.right) + TGGL_WIDTH; iWindowHeight = ((rcWindow.bottom - rcWindow.top) - rcClient.bottom) + TGGL_HEIGHT; SetWindowPos(hwnd, NULL, 0, 0, iWindowWidth, iWindowHeight, SWP_NOZORDER | SWP_NOMOVE); g_hdc = GetDC(hwnd); 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 = 32; pfd.iLayerType = PFD_MAIN_PLANE; iFormat = ChoosePixelFormat(g_hdc, &pfd); SetPixelFormat(g_hdc, iFormat, &pfd); g_hrc = wglCreateContext(g_hdc); wglMakeCurrent(g_hdc, g_hrc); //Set OpenGL options glClearColor(0.0f, 0.0f, 0.0f, 0.5f); glClearDepth(1.0f); glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); glShadeModel(GL_SMOOTH); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); /// glViewport(0, 0, TGGL_WIDTH, TGGL_HEIGHT); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f, TGGL_WIDTH/TGGL_HEIGHT, 0.1f, 100.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); /// //Load texture pbData = GlobalAlloc(GPTR, 256*256*3); hRawTexture = CreateFile("C:\\Documents and Settings\\cesar\\Bureaublad\\texture.raw", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL); ReadFile(hRawTexture, pbData, 256*256*3, &dwBytesRead, NULL); CloseHandle(hRawTexture); glGenTextures(1, &g_uTexture); glBindTexture(GL_TEXTURE_2D, g_uTexture); glTexImage2D(GL_TEXTURE_2D, 0, 3, 256, 256, 0, GL_RGB, GL_UNSIGNED_BYTE, pbData); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); GlobalFree(pbData); ShowWindow(hwnd, SW_SHOW); UpdateWindow(hwnd); SetTimer(hwnd, 1, 30, NULL); while(GetMessage(&msg, NULL, 0, 0) > 0){ TranslateMessage(&msg); DispatchMessage(&msg); } wglMakeCurrent(NULL, NULL); wglDeleteContext(g_hrc); ReleaseDC(hwnd, g_hdc); return (int)msg.wParam;}LRESULT CALLBACK WindowProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam){ static TGGL_Poly poly = { {0.0f, 1.0f, 0.0f}, //v1 {0.87f, -0.5f, 0.0f}, //v2 {-0.87f, -0.5f, 0.0f}, //v3 {1.0f, 0.0f, 0.0f} //color }; static float fRotation = 0.0f; switch(msg){ case WM_DESTROY: PostQuitMessage(0); break; case WM_PAINT: { PAINTSTRUCT ps; BeginPaint(hwnd, &ps); glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glRotatef(fRotation, 1.0f, 1.0f, 0.0f); //RenderPoly(poly); //Quad with texture: glBindTexture(GL_TEXTURE_2D, g_uTexture); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex3f(-0.5f, -0.5f, 0.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f( 0.5f, -0.5f, 0.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f( 0.5f, 0.5f, 0.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-0.5f, 0.5f, 0.0f); glEnd(); SwapBuffers(g_hdc); EndPaint(hwnd, &ps); } break; case WM_TIMER: if(wparam == 1){ if(fRotation >= 360){ fRotation = 0; }else{ fRotation += 1; } RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE | RDW_UPDATENOW); } break; case WM_ERASEBKGND: return TRUE; break; default: return DefWindowProc(hwnd, msg, wparam, lparam); } return 0;}void RenderPoly(TGGL_Poly poly){ glBegin(GL_TRIANGLES); glColor3f(poly.color.r, poly.color.g, poly.color.b); glVertex3f(poly.v1.x, poly.v1.y, poly.v1.z); glVertex3f(poly.v2.x, poly.v2.y, poly.v2.z); glVertex3f(poly.v3.x, poly.v3.y, poly.v3.z); glEnd();}