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

Вниз

Вопросы по OpenGL   Найти похожие ветки 

 
Pa5ha   (2005-04-13 22:48) [40]

Вай, оно работает =)
Я правда сначала устанавливал разрешение, потом максимализировал и получал примерно: http://www.cs.karelia.ru/~vpashkov/others/bug.jpg

Сколько раз можно сделать PUSHMATRIX?


 
Zak3D[@Tm] ©   (2005-04-13 23:50) [41]

Pa5ha   (13.04.05 01:37) [30]
>>Кстати, директХ требовал восстановления поверхности после минимиза и прочего подобного действа. А почему ОпенГЛ не просит?
----------------------
В Опене это автоматизированно : ).
Всё так сказать для людёв.


 
Pa5ha   (2005-04-14 01:59) [42]

После завершения работы в фуллскрине на панели остается кнопка приложения, хотя оно уже давно сгинуло. Что делать?


 
dRake ©   (2005-04-14 02:21) [43]

>После завершения работы в фуллскрине на панели остается кнопка >приложения, хотя оно уже давно сгинуло. Что делать?

Как закрываешься? PostQuitMessage c обработкой?


 
Pa5ha   (2005-04-14 12:20) [44]

Нет. Просто бесконечный цикл завершается. В конце припишу PostQuitMessage.
Что ещё для этого надо? Какие обработчики?


 
Pa5ha   (2005-04-14 12:39) [45]

PostQuitMessage(0); вставил. Лучше не стало.


 
Zak3D[@Tm] ©   (2005-04-14 14:40) [46]

Pa5ha
Покажи как приложение закрываешь.


 
Zak3D[@Tm] ©   (2005-04-14 14:45) [47]

Наверно ты DestroyWindow(...) забыл сделать.


 
Pa5ha   (2005-04-14 15:59) [48]

Блин, все написал, отправил, интернал сервер эррор. Короче. В двух словах. Дестрой Окна у меня есть. Весь проект в этой части как две капли с Хорновским basicEngine. Такая бага появляется только после завершения из фуллскрина. Потом на эту кнопку нажимаешь и она исчезает.


 
Zak3D[@Tm] ©   (2005-04-14 17:33) [49]

Может Windows.UnregisterClass( AppName, hInstance ); не делаешь?
А вообще не знаю, на код смотреть нужно, а Хорновского Енгина нет ща под рукой.


 
П7   (2005-04-14 17:39) [50]

Даже если и не делать анрег - не должна бага выскакивать...


 if FullScreen then
 begin
   ChangeDisplaySettings(TDevMode(nil^), CDS_FULLSCREEN);
   Log.Msg("Set normal screen settings.");
 end;
 if DestroyWindow(Wnd) then
   Log.Msg("Window is destroyed.")
 else
   Log.Err("Window is NOT destroyed.");
 if UnregisterClass(WIN_CLASS_NAME, Instance) then
   Log.Msg("Window class is unregistered.")
 else
   Log.Err("Window class is NOT unregistered.");


Вот как делаю я... Проблем не замечал.


 
Venom Spawn ©   (2005-04-14 17:43) [51]


>    ChangeDisplaySettings(TDevMode(nil^), CDS_FULLSCREEN);


Вот! Давно хотел узнать - что есть такое разыменовывание указателя nil? (Препод по инфе сказал что это попросту не скомпилится :), тем не менее у Яна Хорна всё пашет!)


 
П7   (2005-04-14 17:47) [52]

Видно не шибко твой препод рубит... (: Так ему и передай! (:


 
Venom Spawn ©   (2005-04-14 17:49) [53]

И всё же, что получается при Nil^?


 
П7   (2005-04-14 17:53) [54]

А потестить самому?


 
П7   (2005-04-14 18:30) [55]

http://burks.bton.ac.uk/burks/language/pascal/uddf/pages/fullscrn.htm - в самом конце...
думаю сам догадаешься... И препода научишь. (:


 
Pa5ha   (2005-04-14 19:29) [56]

У меня "absolute 0" не компилится.


 if CFG.EngineSet.Fullscreen  then             // Change back to non fullscreen
 begin
   ChangeDisplaySettings(devmode(nil^), 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;

 // Attempts to destroy the window
 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;

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


Фрагмент моего кода.


 
П7   (2005-04-14 20:40) [57]

И на каком отрезке вашего кода возникает ошибка?


 
Pa5ha   (2005-04-14 23:35) [58]

П7, блин :), ошибка не вылетает. Кнопка застревает на панели. Потом кликнешь и она исчезает.


 
cyborg ©   (2005-04-15 08:31) [59]


> [50] П7   (14.04.05 17:39)
>    ChangeDisplaySettings(TDevMode(nil^), CDS_FULLSCREEN);

Чего это такое? По нулевому адресу неизвестно чего указываешь? Очень странно, что это работает.


 
XProger ©   (2005-04-15 13:19) [60]

cyborg,
Функция требует var переменную (указатели в C++)
Ты даёшь ей переменную, которая по сути нильная. Функция видит что ей подали nil и возвращает видео режим на тот что прописан в реестре.

Pa5ha,
Вот тебе код из моего движка который 100% работает (проверено ;)

procedure xglClose; stdcall;
begin
Log(" ");
Log("---- R_Close ----");
Log("Shutting down OpenGL subsystem");
if not inWindow then  // Change back to non fullscreen
begin
ChangeDisplaySettings(devmode(nil^), 0);
ShowCursor(True);
end;

if xglGamma_def <> xglGamma_Get then
begin
Log("...Restore default display brightness to " +IntToStr(xglGamma_def)+ "% : success");
xglGamma_Set(xglGamma_def);
end;

if wglMakeCurrent(DC, 0) then
Log("...wglMakeCurrent( NULL, NULL ): success")
else
Log("...wglMakeCurrent( NULL, NULL ): failed");

if wglDeleteContext(RC) then
Log("...deleting GL context: success")
else
begin
Log("...deleting GL context: failed");
RC:=0;
end;

if (DC > 0) and (ReleaseDC(Handle, DC) <> 0) then
Log("...releasing DC: success")
else
begin
Log("...releasing DC: failed");
DC:=0;
end;

if (Handle <> 0) and (DestroyWindow(Handle)) then
Log("...destroying window: success")
else
begin
Log("...destroying window: failed");
Handle := 0;
end;

Log("---- finished R_Close ----");
end;


 
Pa5ha   (2005-04-15 17:10) [61]

XProger, После DestroyWindow надо вызывать UnregisterClass. Или нет? У меня все точно так же. В общем, незнаю. Буду искать багу.

В функции возврата гаммы лучше сначала вызватьxglGamma_Set(xglGamma_def);
, а потом написать в лог, что операция выполнена успешно :)


 
XProger ©   (2005-04-15 19:40) [62]

Pa5ha, xglGamma_Set(xglGamma_def) всегда выполняется успешно ;)
Я класс окна не убиваю, и ничего ужасного не происходит... :D


 
Pa5ha   (2005-04-15 23:04) [63]

Итак, пришло время по-тохому пытаться написать что то типа игры. Как это сделать???

Как грамотно оганизовать работу с LOD?
Переднюю и заднюю плоскости отсечения (ну или как из там) надо задавать только для сцены целиком?


 
XProger ©   (2005-04-16 01:28) [64]

Тебе помогут ГеймДевки! =)
http://GameDev.ru


 
Pa5ha   (2005-04-18 23:02) [65]

А как сделать, чтоб прога в свернутом состоянии меньше жрала?


 
XProger ©   (2005-04-19 02:19) [66]

Если прогу минимизировали останавливай цикл. Или добавь в него Sleep :) До тех пор, пока не откроют снова...


 
parovoZZ ©   (2005-04-19 09:47) [67]

А sleep винду не затормозит? Как-то засунул этот слип (1000), так вся винда в предсмертные судуроги впала.


 
Pa5ha   (2005-04-19 12:51) [68]

Ну дак а как этот цикл остановить? В том то и дело.


 
XProger ©   (2005-04-19 13:07) [69]

Да... со слипом эт я сморозил...
Но можно и так:

while not isQuit do
begin
while PeekMessage(msg, 0, 0, 0, PM_REMOVE) do
 begin
 TranslateMessage(msg);
 DispatchMessage(msg);
 if isQuit then
  Exit;
 end;
... // тут апдейт и отрисовка
if not glActive then // этот флажок меняешь когда сворачивают/разворачивают прогу
 WaitMessage;
end;


 
Pa5ha   (2005-05-05 15:35) [70]

Привет! Это опять я. Что то часто не грузиться у меня форум... =(
На гейм деве что то ничего не нашел интересного. Скорее всего, не там смотрел.

Интересно, как в авиасимах отрисовывается ландшафт на 50км? Это так далеко задняя отсекающая плоскость? А потом как отрисовывается модель? Плз, нет ли у кого ссылочки на грамотное создание лодов? http://Gamedev.ru не пойдет =)

Пытался сделать ауру от света фонарей (ну или как это наз-ся...) Не получается создать из восьмибитного BMP-файла восьмибитную текстуру. Модуль ДжонаХорна вылетает при возвращении управления из функции LoadBitmap, но первая строка (запись в лог) после вызова этой функции не выполняется. Не могу пока понять, в чем дело. Не поможет ли кто кодом создания 8-мибитной текстуры из 8-битного BMP-файла (с загрузкой последнего)?


 
Sapersky   (2005-05-05 18:21) [71]

http://Gamedev.ru не пойдет =)

И всё-таки http://Gamedev.ru :)
По лодам для ландшафта (геомипмэппингу) там была весьма неплохая статья. Как раз применительно к симулятору.
Ещё можно поискать по словосочетанию "chunked lod".


 
XProger ©   (2005-05-05 18:28) [72]

МЛЯ! Сколько раз уже повторял, не Джон, а Ян! ;)
И вообще, в его модуле нет поддержки 8 битных текстур! Там же ясно написанно 24 bit онли!

function LoadTex(const FileName: string): DWORD;
type
TaRGB = array [0..1] of record B, G, R : Byte; end;
PRGB  = ^TaRGB;
TaRGBA = array [0..1] of record R, G, B, A : Byte; end;
PRGBA  = ^TaRGBA;
var
bmp  : TBitmap;
x, y : integer;
Data : PRGBA;
p    : PRGB;
idx  : integer;
begin
Result := 0;
bmp := TBitmap.Create;
try
bmp.LoadFromFile(FileName);
bmp.PixelFormat := pf24bit;
GetMem(Data, bmp.Width*bmp.Height*4);
idx := 0;
for y := 0 to bmp.Height - 1 do
 begin
 p := bmp.ScanLine[y];
 for x := 0 to bmp.Width - 1 do
  begin
  Data[idx].R := p[x].R;
  Data[idx].G := p[x].G;
  Data[idx].B := p[x].B;
  // Вот если чёрный то альфа текселя равна 0... вот :)
  if Data[idx].R + Data[idx].G + Data[idx].B = 0 then
   Data[idx].A := 0
  else
   Data[idx].A := 255;
  inc(idx);
 end;
end;
except
bmp.Free;
Exit;
end;
glGenTextures(1, @Result);
glBindTexture(GL_TEXTURE_2D, Result);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// $8058 - это типа GL_RGBA8, т.е. насильное отменение сжатия текстур видяхой...
gluBuild2DMipmaps(GL_TEXTURE_2D, $8058, bmp.Width, bmp.Height, GL_RGBA, GL_UNSIGNED_BYTE, Data);
bmp.Free;
FreeMem(Data);
end;

Грузит любой bmp в 32 битную текстурку, при этом чёрный цвет - прозрачный!
Ну не правда ли гениально а? ;)

Далее по поводу 50 км. А вот когда ты взлетаешь... линия горизонта меняет своё положение? Впринципе этим можно принебреч. А следовательно вот тебе и те самые скай боксы ;) Сделай голубой горизонт и голубой туман (так оно на самом деле и есть по свойствам атмосферы). И вроде никаких проблем возникнуть не должно :)

P.S.
8 bit bmp жмутся намного хуже ч/б tga ;)


 
Pa5ha   (2005-05-05 19:23) [73]


> МЛЯ! Сколько раз уже повторял, не Джон, а Ян! ;)

Ы, первый раз слышу:)

Модуль тот, который грузит тока БМП. Так и наз-ся BMP.pas =)

Ващета мне надо было сделать свечение вокруг фонаря (лампы). Сделал блендингом. Вроде так ничо. Жить можно. Но хотел восьмибитной альфитекстурой все же ) Ладно.

Насчет скайбокса тоже думал... ХЗ чо там и как ) По идее, если это модельный симулятор, то камера будет все время на земле, но хотелось сделать преследующую камеру. Посмотрем. Будем искать.

Кста, ещё насчет света фар/фонарей. Рисую плоскость с текстурой (блендингом), перпендикулярную линии взгляда. При повороте эта плоскость проходит через капот/крыло/что угодно и получается некрасиво. Если не понятно, сделаю скрин. Давно хотел узнать как от этого избавиться.


 
XProger ©   (2005-05-05 19:55) [74]

glDisable(GL_DEPTH_TEST) знаем такое? ;)


 
Pa5ha   (2005-05-05 21:26) [75]

XProger, знать то знаем, но при выглюченом тесте глубины блик (так называется) будет рисоваться всегда. Вощем, на геймдеве написано, что надо проверять расстояние до источника света. Пока что то мне лень это делать. И так номано )


 
XProger ©   (2005-05-05 22:36) [76]

http://XProger.narod.ru (IE)
найди там XEngine... заберись на второй этаж и посмотри на лампочки. Так хотишь? ;)


 
Pa5ha   (2005-05-06 00:11) [77]

XProger, очень такая впечатляющая игрулина ) Сделать хочу так же и даже кажись знаю, как такое реализовать в коде. Будут вопросы, обращусь )


 
3DMan   (2005-07-28 18:14) [78]

ПАМАГИТЕ!!! Хачу в свой движок (пока што еще практически никакой) приделать скайбокс. Как ево сделать? Хачу такойже как и в Serious Sam. Падскажите.


 
DeadMeat ©   (2005-07-28 19:01) [79]


> ПАМАГИТЕ!!! Хачу в свой движок (пока што еще практически
> никакой) приделать скайбокс. Как ево сделать? Хачу такойже
> как и в Serious Sam. Падскажите.

Хъыы...
Приколист..

---
...Death Is Only The Begining...


 
Pa5ha   (2005-12-17 17:45) [80]

Итак, пришло время продолжить :)

Есть ли в ОпенГЛ цветовой ключ и как его юзать? Искал, не нашел. А в директ Иксе есть :)



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

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

Наверх





Память: 0.62 MB
Время: 0.053 c
2-1157613050
RebroFF
2006-09-07 11:10
2006.09.24
Работа с DBGrid


2-1157548368
svt
2006-09-06 17:12
2006.09.24
Как можно в 20 компонентах edit обнулить text?


15-1157694446
ilya39
2006-09-08 09:47
2006.09.24
Windows Server 2003 R2 пакет предустановки


15-1157200726
Andy BitOff
2006-09-02 16:38
2006.09.24
СРОЧНО! Сдох комп!


1-1155123140
Stanislav
2006-08-09 15:32
2006.09.24
Нажата ли клавиша Shift





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский