could somebody tell me why mine square occupy all

Could somebody tell me why mine 3D square (GL_QUADS) occupy all program window ? Why is it so big ?
Code:


#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <tchar.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>


HGLRC hRC; 
HDC hDC; 
HWND hWnd; 
HINSTANCE hInst; 

float rotateValue = 30;






void SetDCPixelFormat(HDC hDC)
{
    int nPixelFormat;     
	
    static PIXELFORMATDESCRIPTOR pfd =
    {
        sizeof(PIXELFORMATDESCRIPTOR), 
        1, 	
        PFD_DRAW_TO_WINDOW |              
        PFD_SUPPORT_OPENGL |              
        PFD_DOUBLEBUFFER, 
        PFD_TYPE_RGBA,                    
        8, 
        0,0,0,0,0,0,                      
        0,0,                              
        0,0,0,0,0,                        
        16, 
        0,                                
        0,                                
        PFD_MAIN_PLANE, 
        0,                                
        0,0,0                             
    };

    nPixelFormat = ChoosePixelFormat(hDC, &pfd); 	
    SetPixelFormat(hDC, nPixelFormat, &pfd); 
}




void Reshape(int width, int height)
{	
	glViewport(0, 0, width, height); 
}



void Reset()
{
	RECT rc;
	GetClientRect(hWnd, &rc); 

	int height = rc.bottom - rc.top;
    int width = rc.right - rc.left;
    if (height == 0) height = 1;

	glViewport(0, 0, width, height); 

	glMatrixMode(GL_PROJECTION); 
	
	glLoadIdentity(); 
	gluPerspective(45.0f, (float)width/(float)height, 1.0f, 100.0f); 	
	
	glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
	
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 
	 
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 	
	glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); 	
}






void InitGLWindow()
{
	glEnable(GL_DEPTH_TEST); 
	glDepthFunc(GL_LEQUAL); 
	glEnable(GL_CULL_FACE); 
	glCullFace(GL_BACK); 
	glFrontFace(GL_CCW); 
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 	
}



void Initialize()
{
	SetDCPixelFormat(hDC); 
	hRC = wglCreateContext(hDC); 
	wglMakeCurrent(hDC, hRC); 
	Reset(); 
	InitGLWindow(); 
}



void DeInitialize()
{
	wglMakeCurrent(NULL, NULL); 
	wglDeleteContext(hRC); 
	ReleaseDC(hWnd, hDC); 
};



void Render()
{	
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	
	glPushMatrix();
	//glTranslatef(0.15f, 0.0f, -0.7f);				
	//glRotatef(rotateValue, 1.0f, 1.0f, 0.0f);

	glBegin(GL_QUADS);
		glColor3f(0.0f,1.0f,0.0f);		
		glVertex3f( 1.0f, 1.0f,-1.0f);
		glVertex3f(-1.0f, 1.0f,-1.0f);
		glVertex3f(-1.0f, 1.0f, 1.0f);
		glVertex3f( 1.0f, 1.0f, 1.0f);

		glColor3f(1.0f,0.5f,0.0f);
		glVertex3f( 1.0f,-1.0f, 1.0f);
		glVertex3f(-1.0f,-1.0f, 1.0f);
		glVertex3f(-1.0f,-1.0f,-1.0f);
		glVertex3f( 1.0f,-1.0f,-1.0f);

		glColor3f(1.0f,0.0f,0.0f);
		glVertex3f( 1.0f, 1.0f, 1.0f);
		glVertex3f(-1.0f, 1.0f, 1.0f);
		glVertex3f(-1.0f,-1.0f, 1.0f);
		glVertex3f( 1.0f,-1.0f, 1.0f);

		glColor3f(1.0f,1.0f,0.0f);
		glVertex3f( 1.0f,-1.0f,-1.0f);
		glVertex3f(-1.0f,-1.0f,-1.0f);
		glVertex3f(-1.0f, 1.0f,-1.0f);
		glVertex3f( 1.0f, 1.0f,-1.0f);

		glColor3f(0.0f,0.0f,1.0f);
		glVertex3f(-1.0f, 1.0f, 1.0f);
		glVertex3f(-1.0f, 1.0f,-1.0f);
		glVertex3f(-1.0f,-1.0f,-1.0f);
		glVertex3f(-1.0f,-1.0f, 1.0f);

		glColor3f(1.0f,0.0f,1.0f);
		glVertex3f( 1.0f, 1.0f,-1.0f);
		glVertex3f( 1.0f, 1.0f, 1.0f);
		glVertex3f( 1.0f,-1.0f, 1.0f);
		glVertex3f( 1.0f,-1.0f,-1.0f);
	glEnd();
	glPopMatrix();

	glFlush(); 
    SwapBuffers(hDC); 
}










static TCHAR szWindowClass[] = _T("win32app");
static TCHAR szTitle[] = _T("Win32 Guided Tour Application");

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);


int WINAPI WinMain(HINSTANCE hInstance,      
                   HINSTANCE hPrevInstance,  
                   LPSTR lpCmdLine,          
                   int nCmdShow)             
{
    WNDCLASSEX wcex;  
	
    wcex.cbSize = sizeof(WNDCLASSEX); 
    wcex.style          = CS_HREDRAW | CS_VREDRAW; 
    wcex.lpfnWndProc    = WndProc; 
    wcex.cbClsExtra     = 0; 
    wcex.cbWndExtra     = 0; 
    wcex.hInstance      = hInstance; 
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW); 
    wcex.hbrBackground  = NULL; 
    wcex.lpszMenuName   = NULL; 
    wcex.lpszClassName  = szWindowClass; 
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION)); 
		
    if (!RegisterClassEx(&wcex))
    {
        MessageBox(NULL,
            _T("Call to RegisterClassEx failed!"),
            _T("Win32 Guided Tour"),
            NULL);

        return 1;
    }

    hInst = hInstance; 		
	
    hWnd = CreateWindow(
        szWindowClass, 
        szTitle, 
        WS_OVERLAPPEDWINDOW, 
        CW_USEDEFAULT, 
		CW_USEDEFAULT, 		
        500, 
		500, 
        NULL, 		
        NULL, 
        hInstance, 
        NULL 
    );
	
    if (!hWnd)
    {
        MessageBox(NULL,
            _T("Call to CreateWindow failed!"),
            _T("Win32 Guided Tour"),
            NULL);

        return 1;
    }    
    
    ShowWindow(hWnd,
        nCmdShow);
	
    UpdateWindow(hWnd);

    MSG msg; 
    
    while (GetMessage(&msg, NULL, 0, 0))
    {		
        TranslateMessage(&msg);		
        DispatchMessage(&msg);
    }

    return (int) msg.wParam;
}


float value = 50;

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message) 
    {
		case WM_CREATE: 
			hDC = GetDC(hWnd); 
			Initialize();
			break;	
		case WM_SIZE: 
			Reshape(LOWORD(lParam), HIWORD(lParam)); 			
			InvalidateRect(hWnd, NULL, TRUE); 
			break;
		case WM_PAINT: 
			Render();
			break;
		case WM_KEYDOWN:         
			switch (wParam)
			{
				case VK_LEFT:
					rotateValue -= 10;
					InvalidateRect(hWnd, NULL, TRUE); 
				break;
           
				case VK_RIGHT:  
					rotateValue += 10;
					InvalidateRect(hWnd, NULL, TRUE); 
				break;
			}
			break;
		case WM_DESTROY: 
			DeInitialize();
			PostQuitMessage(0); 
			break;
		default: 
			return DefWindowProc(hWnd, message, wParam, lParam); 			
			break;
    }

    return 0;
}

Two reasons:

  1. Because you should setup the projection matrix in the reshape handler and not the reset handler. Change your reset handler to this.

void Reset()
{
   RECT rc;
   GetClientRect(hWnd, &rc); 
   int height = rc.bottom - rc.top;
   int width = rc.right - rc.left;
   if (height == 0) height = 1;
   glViewport(0, 0, width, height); 	
}

and your reshape handler to this.


void Reshape(int width, int height)
{	
   glViewport(0, 0, width, height); 
   glMatrixMode(GL_PROJECTION); 
   glLoadIdentity(); 
   gluPerspective(45.0, (float)width/(float)height, 1.f, 100.0f); 	
   glMatrixMode(GL_MODELVIEW); 
}
2) You have not applied any transformation to the camera or
the object. Add glTranslatef(0,0,-5); after glPushMatrix(); 
and before u call glBegin(GL_QUADS);
So the render function becomes this,

void Render()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -5.f);
glRotatef(rotateValue, 1.0f, 1.0f, 0.0f);
glBegin(GL_QUADS);
glColor3f(0.0f,1.0f,0.0f);
glVertex3f( 1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f,-1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);

  glColor3f(1.0f,0.5f,0.0f);
  glVertex3f( 1.0f,-1.0f, -1.0f);
  glVertex3f(-1.0f,-1.0f, -1.0f);
  glVertex3f(-1.0f,-1.0f,1.0f);
  glVertex3f( 1.0f,-1.0f,1.0f);

  glColor3f(1.0f,0.0f,0.0f);
  glVertex3f( 1.0f, 1.0f, 1.0f);
  glVertex3f(-1.0f, 1.0f, 1.0f);
  glVertex3f(-1.0f,-1.0f, 1.0f);
  glVertex3f( 1.0f,-1.0f, 1.0f);

  glColor3f(1.0f,1.0f,0.0f);
  glVertex3f( 1.0f, 1.0f,-1.0f);
  glVertex3f(-1.0f, 1.0f,-1.0f);
  glVertex3f(-1.0f,-1.0f,-1.0f);
  glVertex3f( 1.0f,-1.0f,-1.0f);

  glColor3f(0.0f,0.0f,1.0f);
  glVertex3f(-1.0f, 1.0f, 1.0f);
  glVertex3f(-1.0f, 1.0f,-1.0f);
  glVertex3f(-1.0f,-1.0f,-1.0f);
  glVertex3f(-1.0f,-1.0f, 1.0f);

  glColor3f(1.0f,0.0f,1.0f);
  glVertex3f( 1.0f, 1.0f,-1.0f);
  glVertex3f( 1.0f, 1.0f, 1.0f);
  glVertex3f( 1.0f,-1.0f, 1.0f);
  glVertex3f( 1.0f,-1.0f,-1.0f);	 

glEnd();

glFlush();
SwapBuffers(hDC);
}



See if this helps.

Thx very, very much !! :slight_smile: