Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2008.11.30;
Скачать: [xml.tar.bz2];

Вниз

Ошибка в GL программе   Найти похожие ветки 

 
GLProg   (2007-04-06 21:30) [0]

Скажите где здесь ошибка.
При компиляции ничего не появлется только прозрачное окно.  

program prog;

uses
 Windows,
 Messages,
 OpenGL;

var
 h_wnd: HWND;
 h_wc:  TWndClassEx;
 h_dc:  HDC;
 h_rc:  HGLRC;
 msg :  TMsg;

procedure Draw();
begin
 glClearColor(1.0, 0.0, 0.0, 0.0); // Set the Background colour of or scene
 glLoadIdentity();                 // Load a "clean" model matrix on the stack
 glClear(GL_COLOR_BUFFER_BIT);     // Clear the colour buffer

 glTranslatef(0.0,0.0,-3.0);       // Move the scene back by 3 units (Will be explained in a later Chapter)

 glColor3f(1.0, 1.0, 1.0);         // Set the colour of the objects that will be dawn later
 glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
 glBegin(GL_POLYGON);              // begin drawing a polygon (Many pointed/ sided shape)
   glVertex2f(-0.5, -0.5);         // Draw a point (Two Dimentional Vertex)
   glVertex2f(-0.5, 0.5);
   glVertex2f(0.5, 0.5);
   glVertex2f(0.5, -0.5);
 glEnd();                          // End the shape

end;

procedure Init;
begin
//  glClear(GL_COLOR_BUFFER_BIT);
 glClearColor(1.0,1.0,1.0,1.0);
end;

procedure Resize(Width, Height : Integer);
begin
 glViewport(0, 0, Width, Height);    // Set the viewport for the OpenGL window
 glMatrixMode(GL_PROJECTION);        // Change Matrix Mode to Projection
 glLoadIdentity();                   // Reset View
 gluPerspective(45.0, Width/Height, 1.0, 100.0);  // Do the perspective calculations. Last value = max clipping depth

 glMatrixMode(GL_MODELVIEW);         // Return to the modelview matrix
 glLoadIdentity();                   // Reset View
end;

{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{ Главная процедура обработки сообщений                                        }
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
function WndProc(hwnd: HWND; msg: integer; wparam: WPARAM; lparam: LPARAM):LResult; stdcall;
begin
 case msg of
   WM_CREATE:  begin end;
   WM_DESTROY: begin PostQuitMessage(0); Result := 0; end;
   WM_SIZE:    begin Resize(LOWORD(wparam), HIWORD(lparam)) end;
 else
   Result := DefWindowProc(hwnd, msg, wparam, lparam);
 end;
end;

{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{ Процедура создаёт окно и инициализирует OpenGL                               }
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
procedure CreateAPP(name: PChar; width, height: integer);
var
 pfd: TPixelFormatDescriptor;
 nPixelFormat: Integer;
begin
 // Заполнить структуру h_wc нулями
 FillChar(h_wc, SizeOf(h_wc), 0);
 // Установка основных параметров класса
 h_wc.cbSize := SizeOf(h_wc);
 h_wc.style  := CS_OWNDC or CS_VREDRAW or CS_HREDRAW;  // позволяет перерисовывывать окно
 h_wc.lpfnWndProc := @WndProc;                         // указатель на процедуру обработки сообщений
 h_wc.hInstance    := HInstance;                       // экземпляр приложения
 h_wc.lpszMenuName := nil;                             // отсутствие меню (nil)
 h_wc.hCursor      := LoadCursor(0, IDC_ARROW);        // устанавливаем стандартный курсор
//  h_wc.hbrBackground := COLOR_BTNFACE+1;                // цвет окна
 h_wc.lpszClassName := "OpenGL";                       // имя класса
 // Регистрация класса окна в системе
 WINDOWS.RegisterClassEx(h_wc);
 // Создаётся окно
 h_wnd :=  CreateWindowEx(WS_EX_APPWINDOW or       // Top level window
                WS_EX_WINDOWEDGE, "OpenGL", name,
   WS_OVERLAPPEDWINDOW or     // Creates an overlapping window
              WS_CLIPCHILDREN or         // Doesn"t draw within child windows
              WS_CLIPSIBLINGS, 0, 0, width, height, 0, 0,
   Hinstance, nil);

 h_dc := GetDC(h_wnd);

 with pfd do
 begin
   nSize := SizeOf(TPixelFormatDescriptor); // размер структуры
   nVersion := 1;                            // номер версии
   dwFlags := PFD_DOUBLEBUFFER or PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL; // множество битовых флагов, определяющих устройство и интерфейс
   iPixelType := PFD_TYPE_RGBA; // режим для изображения цветов
   cColorBits := 32;            // число битовых плоскостей в каждом буфере цвета
   cRedBits := 0;               // число битовых плоскостей красного в каждом буфере RGBA
   cRedShift := 0;              // смещение от начала числа битовых плоскостей красного в каждом буфере RGBA
   cGreenBits := 0;             // число битовых плоскостей зелёного в каждом буфере RGBA
   cGreenShift := 0;            // смещение от начала числа битовых плоскостей зелёного в каждом буфере RGBA
   cBlueBits := 0;              // число битовых плоскостей синего в каждом буфере RGBA
   cBlueShift := 0;             // смещение от начала числа битовых плоскостей синего в каждом буфере RGBA
   cAlphaBits := 0;             // число битовых плоскостей альфа в каждом буфере RGBA
   cAlphaShift := 0;            // смещение от начала числа битовых плоскостей альфа в каждом буфере RGBA
   cAccumBits := 0;             // общее число битовых плоскостей в буфере аккумулятора
   cAccumRedBits := 0;          // число битовых плоскостей красного в буфере аккумулятора
   cAccumGreenBits := 0;        // число битовых плоскостей зелёного в буфере аккумулятора
   cAccumBlueBits := 0;         // число битовых плоскостей синего в буфере аккумулятора
   cAccumAlphaBits := 0;        // число битовых плоскостей альфа в буфере аккумулятора
   cDepthBits := 32;            // размер буфера глубины (ось z)
   cStencilBits := 0;           // размер буфера трафарета
   cAuxBuffers := 0;            // число вспомогательных буферов
   iLayerType := PFD_MAIN_PLANE;// тип плоскости
   bReserved := 0;              // число плоскостей переднего и заднего плана
   dwLayerMask := 0;            // игнорируется
   dwVisibleMask := 0;          // индекс или цвет прозрачности нижней плоскости
   dwDamageMask := 0;           // игнорируется
 end;

 nPixelFormat := ChoosePixelFormat( H_DC, @pfd ); // запрос системе - поддерживается ли выбранный формат пикселей
 SetPixelFormat( H_DC, nPixelFormat, @pfd );      // устанавливаем формат пикселей в контексте устройства

 h_rc := wglCreateContext(h_dc);
 wglMakeCurrent(h_dc, h_rc);

 // Отображается окно
 ShowWindow(h_wnd, SW_SHOW);
 SetForegroundWindow(h_Wnd);
 SetFocus(h_Wnd);
 Resize(width,height);
 Init;

end;

{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
{ Главный цикл сообщений                                                       }
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
procedure Loop;
begin
 while GetMessage(msg, 0, 0, 0) do
 begin
   TranslateMessage(msg);   // переводит сообщения клавиатуры в символьный тип
   DispatchMessage(msg);    // посылает сообщения процедуре обработки сообщений
 end;
 Draw();
 SwapBuffers(h_dc);
end;

begin
 CreateAPP("Semple1",800,600);
 Loop;
end.


 
XProger ©   (2007-04-07 02:28) [1]

В логике...
procedure Loop;
begin
while GetMessage(msg, 0, 0, 0) do // цикл до прихода WM_QUIT
begin
  TranslateMessage(msg);   // переводит сообщения клавиатуры в символьный тип
  DispatchMessage(msg);    // посылает сообщения процедуре обработки сообщений
end;
Draw();
SwapBuffers(h_dc);
end;



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2008.11.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
6-1195722943
Леонид Федьков
2007-11-22 12:15
2008.11.30
Повторный вызов idHttp1.Get(...)


2-1224236676
РВА
2008-10-17 13:44
2008.11.30
Ошибка при обращении к базе


9-1175243923
>>DEATH<<
2007-03-30 12:38
2008.11.30
реализация консоли


15-1222600425
Кое кто
2008-09-28 15:13
2008.11.30
Купил игру


8-1188300158
Dr. Andrew
2007-08-28 15:22
2008.11.30
Ошибка при заполнении текста bitmap. Почему?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский