-
Как в Delphi7 просто в консольном проекте подключить OpenGL и использовать её?
-
OpenGL требует окно, на котором будет рендерить.
-
может месье желает прям в консоли выводить рендер? :))
-
Если без VCL, то примерно так:
program OpenGL_min;
uses
Messages, Windows, OpenGL;
const
AppName = 'OpenGL_Min';
Var
Window : HWnd;
Message : TMsg;
WindowClass : TWndClass;
dc : HDC;
hrc : HGLRC; MyPaint : TPaintStruct;
procedure SetDCPixelFormat (hdc : HDC);
var
pfd : TPixelFormatDescriptor; nPixelFormat : Integer;
Begin
With pfd do begin
nSize := sizeof (TPixelFormatDescriptor); nVersion := 1; dwFlags := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL; iPixelType := PFD_TYPE_RGBA; cColorBits := 16; cRedBits := 0; cRedShift := 0; cGreenBits := 0; cGreenShift := 0; cBlueBits := 0; cBlueShift := 0; cAlphaBits := 0; cAlphaShift := 0; cAccumBits := 0; cAccumRedBits := 0; cAccumGreenBits := 0; cAccumBlueBits := 0; cAccumAlphaBits := 0; cDepthBits := 32; cStencilBits := 0; cAuxBuffers := 0; iLayerType := PFD_MAIN_PLANE; bReserved := 0; dwLayerMask := 0; dwVisibleMask := 0; dwDamageMask := 0; end;
nPixelFormat := ChoosePixelFormat (hdc, @pfd); SetPixelFormat (hdc, nPixelFormat, @pfd); End;
function WindowProc (Window : HWnd; Message, WParam : Word;
LParam : LongInt) : LongInt; stdcall;
Begin
WindowProc := 0;
case Message of
wm_Create:
begin
dc := GetDC (Window);
SetDCPixelFormat (dc); hrc := wglCreateContext (dc); ReleaseDC (Window, dc);
end;
wm_Paint:
begin
dc := BeginPaint (Window, MyPaint);
wglMakeCurrent (dc, hrc);
glClearColor (0.85, 0.75, 0.5, 1.0); glClear (GL_COLOR_BUFFER_BIT);
wglMakeCurrent (dc, 0);
EndPaint (Window, MyPaint);
ReleaseDC (Window, dc);
end;
wm_Destroy :
begin
wglDeleteContext (hrc); DeleteDC (dc);
PostQuitMessage (0);
Exit;
end;
end; WindowProc := DefWindowProc (Window, Message, WParam, LParam);
End;
Begin
With WindowClass do
begin
Style := cs_HRedraw or cs_VRedraw;
lpfnWndProc := @WindowProc;
cbClsExtra := 0;
cbWndExtra := 0;
hInstance := 0;
hCursor := LoadCursor (0, idc_Arrow);
lpszClassName := AppName;
end;
RegisterClass (WindowClass);
Window := CreateWindow (AppName, AppName,
ws_OverLappedWindow or ws_ClipChildren
or ws_ClipSiBlings, cw_UseDefault, cw_UseDefault,
cw_UseDefault, cw_UseDefault,
HWND_DESKTOP, 0, HInstance, nil);
ShowWindow (Window, CmdShow);
UpdateWindow (Window);
While GetMessage (Message, 0, 0, 0) do begin
TranslateMessage (Message);
DispatchMessage (Message);
end;
Halt (Message.wParam);
end.
-
> [2] antonn © (08.01.08 00:45) > может месье желает прям в консоли выводить рендер? :))
А консоль тоже окно.
-
> [3] Дуболом (08.01.08 07:00) > Если без VCL, то примерно так:
Не вижу наличие отсутствия окна.
-
> Дуболом
Не вижу директивы {$APPTYPE CONSOLE}.
-
> homm © (08.01.08 14:27) [5]
А я обещал?
> VBO (08.01.08 18:28) [6]
От огорчения убей себя ап стену.
-
> [7] Дуболом (09.01.08 06:25) > А я обещал?
Конечно. Первой строчкой в [3].
Убей сибяапдуб.
-
> homm © (09.01.08 12:15) [8]
Тормозить никому не вредно. Даже тебе. Я обещал без ВКЛ. Это и привел. Как сочетается с заявой? Элементарно. Автор зелень, а потому в его голове спокойно живут рядом консольные приложения и приложения без формы. Если же, клонечно, повыпендриваться как ты, то можно и далее стебаться. Толку то от этого, чудо?
-
> [9] Дуболом (09.01.08 13:02) > Автор зелень
И?
> а потому в его голове спокойно живут рядом консольные приложения > и приложения без формы. И в моей спокойно живут, друг друга не трогают. И?
-
> [9] Дуболом (09.01.08 13:02)
LMD
-
> homm © (09.01.08 13:05) [10]
Вот любишь ты на ровном месте повыеживаться, болезный. Еще бы с результатом в виде полезных советов. :) Ладно бы мозги наблюдались.
-
> Palladin © (09.01.08 13:10) [11]
взаимно.
-
> [12] Дуболом (09.01.08 13:11) > Еще бы с результатом в виде полезных советов.
Как обычно самый верный и единственный ответ уже дан в [1]. Зачем что то еще?
-
> homm © (09.01.08 13:13) [14]
а телепатия?
-
> а телепатия?
А что это?
|