FreePascal and OGL

Модератор: Модераторы

Сообщение ANDREY.EXE » 28.03.2006 15:34:02

<span style='color:red'>Moderated — что-то среднее между оффтопом и наездом...</span>
ANDREY.EXE
новенький
 
Сообщения: 60
Зарегистрирован: 18.03.2006 22:06:35

Сообщение ANDREY.EXE » 29.03.2006 12:38:13

Так чё никто незнает чё мне с этим делать
<415> error while linking
<415> fatal: there were 1 errors compiling module , stopping :rolleyes:
ANDREY.EXE
новенький
 
Сообщения: 60
Зарегистрирован: 18.03.2006 22:06:35

Сообщение Sniper » 29.03.2006 13:52:08

телепаты в отпуске.. покажи код, как компилируешь...
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение ANDREY.EXE » 29.03.2006 19:15:01

{$mode delphi}{$H+}
program Project2;


uses
Windows,
Messages,

glu,
GL;

const
WND_TITLE = 'OpenGL';
FPS_TIMER = 1;
FPS_INTERVAL = 1000;

var
h_Wnd : HWND;
h_DC : HDC;
h_RC : HGLRC;
keys : Array[0..255] of Boolean;
FPSCount : Integer = 0;
ElapsedTime : Integer;
rtri: GLfloat;
rquad: GLfloat;


{$R *.RES}

procedure glBindTexture(target: GLenum; texture: GLuint); stdcall; external opengl32;


function IntToStr(Num : Integer) : String;
begin
Str(Num, result);
end;



procedure glDraw();
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(-1.5,0.0,-7.0);
glRotatef(rtri,0.0,1.0,0.0);
glColor3f(0.0,1.0,0.0);
glBegin(GL_POLYGON);
glVertex3f( 0.0, 1.0, 0.0);
glVertex3f(-1.0,-1.0, 0.0);
glVertex3f( 1.0,-1.0, 0.0);
glEnd();
glLoadIdentity();
glTranslatef(1.5,0.0,-6.0);
glRotatef(rquad,1.0,1.0,1.0);
glBegin(GL_QUADS);
glColor3f(0.0,1.0,0.0);
glVertex3f(-1.0, 1.0, 0.0);
glColor3f(1.0,1.0,1.0);
glVertex3f( 1.0, 1.0, 0.0);
glColor3f(1.0,0.0,1.0);
glVertex3f( 1.0,-1.0, 0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(-1.0,-1.0, 0.0);
glEnd();
rtri := rtri + 0.2;
rquad := rquad - 0.15;
end;



procedure glInit();
begin
glClearColor(0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_SMOOTH);
glClearDepth(1.0);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);

glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);

end;

procedure glResizeWnd(Width, Height : Integer);
begin
if (Height = 0) then
Height := 1;
glViewport(0, 0, Width, Height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, Width/Height, 1.0, 100.0);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
end;


function WndProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
case (Msg) of
WM_CREATE:
begin
end;
WM_CLOSE:
begin
PostQuitMessage(0);
Result := 0
end;
WM_KEYDOWN:
begin
keys[wParam] := True;
Result := 0;
end;
WM_KEYUP:
begin
keys[wParam] := False;
Result := 0;
end;
WM_SIZE:
begin
glResizeWnd(LOWORD(lParam),HIWORD(lParam));
Result := 0;
end;
WM_TIMER :
begin
if wParam = FPS_TIMER then
begin
FPSCount :=Round(FPSCount * 1000/FPS_INTERVAL);
SetWindowText(h_Wnd, PChar(WND_TITLE + ' [' + intToStr(FPSCount) + ' FPS]'));
FPSCount := 0;
Result := 0;
end;
end;
else
Result := DefWindowProc(hWnd, Msg, wParam, lParam);
end;
end;

procedure glKillWnd(Fullscreen : Boolean);
begin
if Fullscreen then
begin
ChangeDisplaySettings(devmode(nil^), 0);
ShowCursor(True);
end;

if (not wglMakeCurrent(h_DC, 0)) then
MessageBox(0, 'Release of DC and RC failed!', 'Error', MB_OK or MB_ICONERROR);

if (not wglDeleteContext(h_RC)) then
begin
MessageBox(0, 'Release of rendering context failed!', 'Error', MB_OK or MB_ICONERROR);
h_RC := 0;
end;

if ((h_DC > 0) and (ReleaseDC(h_Wnd, h_DC) = 0)) then
begin
MessageBox(0, 'Release of device context failed!', 'Error', MB_OK or MB_ICONERROR);
h_DC := 0;
end;

if ((h_Wnd <> 0) and (not DestroyWindow(h_Wnd))) then
begin
MessageBox(0, 'Unable to destroy window!', 'Error', MB_OK or MB_ICONERROR);
h_Wnd := 0;
end;

if (not UnRegisterClass('OpenGL', hInstance)) then
begin
MessageBox(0, 'Unable to unregister window class!', 'Error', MB_OK or MB_ICONERROR);
// hInstance := 0;
end;
end;


function glCreateWnd(Width, Height : Integer; Fullscreen : Boolean; PixelDepth : Integer) : Boolean;
var
wndClass : TWndClass;
dwStyle : DWORD;
dwExStyle : DWORD;
dmScreenSettings : DEVMODE;
PixelFormat : GLuint;
h_Instance : HINST;
pfd : TPIXELFORMATDESCRIPTOR;
begin
h_Instance := GetModuleHandle(nil);
ZeroMemory(@wndClass, SizeOf(wndClass));

with wndClass do
begin
style := CS_HREDRAW or
CS_VREDRAW or
CS_OWNDC;
lpfnWndProc := @WndProc;
hInstance := h_Instance;
hCursor := LoadCursor(0, IDC_ARROW);
lpszClassName := 'OpenGL';
end;

if (RegisterClass(wndClass) = 0) then
begin
MessageBox(0, 'Failed to register the window class!', 'Error', MB_OK or MB_ICONERROR);
Result := False;
Exit
end;


if Fullscreen then
begin
ZeroMemory(@dmScreenSettings, SizeOf(dmScreenSettings));
with dmScreenSettings do begin
dmSize := SizeOf(dmScreenSettings);
dmPelsWidth := Width;
dmPelsHeight := Height;
dmBitsPerPel := PixelDepth;
dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_BITSPERPEL;
end;


if (ChangeDisplaySettings(dmScreenSettings, CDS_FULLSCREEN) = DISP_CHANGE_FAILED) then
begin
MessageBox(0, 'Unable to switch to fullscreen!', 'Error', MB_OK or MB_ICONERROR);
Fullscreen := False;
end;
end;


if (Fullscreen) then
begin
dwStyle := WS_POPUP or
WS_CLIPCHILDREN
or WS_CLIPSIBLINGS;
dwExStyle := WS_EX_APPWINDOW;
ShowCursor(False);
end
else
begin
dwStyle := WS_OVERLAPPEDWINDOW or
WS_CLIPCHILDREN or
WS_CLIPSIBLINGS;
dwExStyle := WS_EX_APPWINDOW or
WS_EX_WINDOWEDGE;
end;


h_Wnd := CreateWindowEx(dwExStyle,
'OpenGL',
WND_TITLE,
dwStyle,
0, 0,
Width, Height,
0,
0,
h_Instance,
nil);
if h_Wnd = 0 then
begin
glKillWnd(Fullscreen);
MessageBox(0, 'Unable to create window!', 'Error', MB_OK or MB_ICONERROR);
Result := False;
Exit;
end;


h_DC := GetDC(h_Wnd);
if (h_DC = 0) then
begin
glKillWnd(Fullscreen);
MessageBox(0, 'Unable to get a device context!', 'Error', MB_OK or MB_ICONERROR);
Result := False;
Exit;
end;


with pfd do
begin
nSize := SizeOf(TPIXELFORMATDESCRIPTOR);
nVersion := 1;
dwFlags := PFD_DRAW_TO_WINDOW
or PFD_SUPPORT_OPENGL
or PFD_DOUBLEBUFFER;
iPixelType := PFD_TYPE_RGBA;
cColorBits := PixelDepth;
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 := 16;
cStencilBits := 0;
cAuxBuffers := 0;
iLayerType := PFD_MAIN_PLANE;
bReserved := 0;
dwLayerMask := 0;
dwVisibleMask := 0;
dwDamageMask := 0;
end;


PixelFormat := ChoosePixelFormat(h_DC, @pfd);
if (PixelFormat = 0) then
begin
glKillWnd(Fullscreen);
MessageBox(0, 'Unable to find a suitable pixel format', 'Error', MB_OK or MB_ICONERROR);
Result := False;
Exit;
end;


if (not SetPixelFormat(h_DC, PixelFormat, @pfd)) then
begin
glKillWnd(Fullscreen);
MessageBox(0, 'Unable to set the pixel format', 'Error', MB_OK or MB_ICONERROR);
Result := False;
Exit;
end;

h_RC := wglCreateContext(h_DC);
if (h_RC = 0) then
begin
glKillWnd(Fullscreen);
MessageBox(0, 'Unable to create an OpenGL rendering context', 'Error', MB_OK or MB_ICONERROR);
Result := False;
Exit;
end;


if (not wglMakeCurrent(h_DC, h_RC)) then
begin
glKillWnd(Fullscreen);
MessageBox(0, 'Unable to activate OpenGL rendering context', 'Error', MB_OK or MB_ICONERROR);
Result := False;
Exit;
end;


SetTimer(h_Wnd, FPS_TIMER, FPS_INTERVAL, nil);
ShowWindow(h_Wnd, SW_SHOW);
SetForegroundWindow(h_Wnd);
SetFocus(h_Wnd);


glResizeWnd(Width, Height);
glInit();

Result := True;
end;



function WinMain(hInstance : HINST; hPrevInstance : HINST;
lpCmdLine : PChar; nCmdShow : Integer) : Integer; stdcall;
var
msg : TMsg;
finished : Boolean;
DemoStart, LastTime : DWord;
begin
finished := False;


if not glCreateWnd(1024, 768, True, 32) then
begin
Result := 0;
Exit;
end;

DemoStart := GetTickCount();


while not finished do
begin
if (PeekMessage(msg, 0, 0, 0, PM_REMOVE)) then
begin
if (msg.message = WM_QUIT) then
finished := True
else
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end
else
begin
Inc(FPSCount);

LastTime :=ElapsedTime;
ElapsedTime :=GetTickCount() - DemoStart;
ElapsedTime :=(LastTime + ElapsedTime) DIV 2;

glDraw();
SwapBuffers(h_DC);

if (keys[VK_ESCAPE]) then
finished := True
else

end;
end;
glKillWnd(FALSE);
Result := msg.wParam;
end;


begin
WinMain( hInstance, hPrevInst, CmdLine, CmdShow );
end.
P.S а у тебя чё стоит FP или Delphi :rolleyes:
ANDREY.EXE
новенький
 
Сообщения: 60
Зарегистрирован: 18.03.2006 22:06:35

Сообщение SovNarKom » 29.03.2006 23:41:35

{$R *.RES} - Убери
SovNarKom
постоялец
 
Сообщения: 389
Зарегистрирован: 28.05.2005 10:37:39
Откуда: Воронеж [vrn] [36]

Сообщение Sniper » 30.03.2006 00:42:09

>>P.S а у тебя чё стоит FP или Delphi

FPC 2.0.2, Delphi 7, Delphi 2005
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение Sniper » 30.03.2006 00:55:18

ANDREY.EXE
хочешь бесплатный совет?

Разберись с компилятором.. сядь и почитай документацию.
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение ANDREY.EXE » 30.03.2006 10:08:23

Я понимаю совет хороший но только с английским напряг читаю через слово!!!
А где ты столько дельфяков набрал и я хочу :o
ANDREY.EXE
новенький
 
Сообщения: 60
Зарегистрирован: 18.03.2006 22:06:35

Сообщение ANDREY.EXE » 30.03.2006 10:28:17

ОППППА!!!!ЗАРАБОТАЛО.
P.S Всем кто неостался равнодушен к моим вопросам большое спасибо!!! :D
ANDREY.EXE
новенький
 
Сообщения: 60
Зарегистрирован: 18.03.2006 22:06:35

Сообщение ANDREY.EXE » 30.03.2006 21:35:14

Задаю сразу два вопроса.Как загрузить и потом наложить текстуру на допустим кубик и второй как сделать чтоб камера перемещалась при нажатии клавиш (W,S,D,A) ну вообщем как в контре управление да и вроде смена положения камеры делается этой командой gluLookAt(0,0,0, 0,0,0, 0,0,0) только офций там много растолкуйте.
ANDREY.EXE
новенький
 
Сообщения: 60
Зарегистрирован: 18.03.2006 22:06:35

Сообщение Sniper » 31.03.2006 14:15:10

Ещё один мега проЭкт

<a href='http://www.zulaco.co.za' target='_blank'>http://www.zulaco.co.za</a>
<a href='http://www.delphigl.com' target='_blank'>http://www.delphigl.com</a>
<a href='http://delphigl.narod.ru' target='_blank'>http://delphigl.narod.ru</a>
<a href='http://www.delphi3d.net' target='_blank'>http://www.delphi3d.net</a>
<a href='http://www.pascalgamedevelopment.com' target='_blank'>http://www.pascalgamedevelopment.com</a>
<a href='http://www.clootie.ru' target='_blank'>http://www.clootie.ru</a>
<a href='http://www.gamedev.ru' target='_blank'>http://www.gamedev.ru</a>

Учись искать нужную тебе инфу, потому что не ты первый и не ты последний это спрашиваешь
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Сообщение wellx » 31.03.2006 17:32:42

Не помню, пробегало ли здесь это:
<a href='http://glscene.sourceforge.net/index.php' target='_blank'>http://glscene.sourceforge.net/index.php</a>
wellx
новенький
 
Сообщения: 67
Зарегистрирован: 06.05.2005 14:01:07

Сообщение ANDREY.EXE » 31.03.2006 19:10:19

Нет не мега проэкт а просто движок поддержующий вертексные и пиксельные шейдеры рендер OGL,DirectX,Soft, и загрузка всех возможных форматов :D.А если серьёзно то просто интересно побегать по сцене.Ну а с мега проэктом я ещё подожду так как это пока ещё не вмоих силах взять и движок под ОГЛ сворганить но если всё так будет развиватся можно будет чёто и сделать как говорится отдать честь Думу3 а потом забить в угол Анрил.
P.S я чёто немогу прилинковать файл пишу #include('vyygu.pas') а он нефига типа невыйдет или я чёто неправильно пишу.
ANDREY.EXE
новенький
 
Сообщения: 60
Зарегистрирован: 18.03.2006 22:06:35

Сообщение ANDREY.EXE » 31.03.2006 19:20:49

Да все эти сайты очень полезны но большинство на АНГЛ мне б чё нить русского :D
ANDREY.EXE
новенький
 
Сообщения: 60
Зарегистрирован: 18.03.2006 22:06:35

Сообщение Sniper » 31.03.2006 23:39:46

А переводчиком www.translate.ru воспользоваться религия не позволяет?
Sniper
постоялец
 
Сообщения: 472
Зарегистрирован: 28.05.2005 13:02:42

Пред.След.

Вернуться в Графика

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru