HLFX.Ru Forum Страницы (4): « 1 2 [3] 4 »
Показать все 57 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- проблема с туманом (https://hlfx.ru/forum/showthread.php?threadid=956)


Отправлено Troll 25-10-2007 в 09:57:

Потому что иногда такой код может вылететь, так как будут обращения к библиотеке opengl. Даже на d3d может вылететь. Поэтому самое правильное это проверка -
if(!IEngineStudio.IsHardware())
return 0;
И после сделать туман через pTriApi. Тогда полётов точно не будет.


Отправлено Дядя Миша 25-10-2007 в 11:20:

Цитата:
Поэтому самое правильное это проверка -
if(!IEngineStudio.IsHardware())
return 0;

Неправильная это проверка. Hardware еще не указывает явно рендерим мы в d3d или в gl.
вот так проверять надо
code:
//Check video mode if (glGetString(GL_RENDERER)) { }


Добавлено 25-10-2007 в 15:20:

Troll туман для триапи один чорт не работает в d3d, к тому же в гл можно настроить больше опций, по сравнению с триапи.
А вообще - лучше всего табличный туман


Отправлено XaeroX 25-10-2007 в 11:47:

Цитата:
Дядя Миша писал:
А вообще - лучше всего табличный туман

__________________

xaerox on Vivino


Отправлено Troll 25-10-2007 в 12:22:

Правильная это проверка!
Туман через ТриАпи не будут работать в d3d но и не будет летать как в случае с просто вызовом gl функций.
А вообще лучше сделать булевое разделение и сделать разделение d3d/gl, рендерить туман и прочие фишки поотдельности для каждого рендера.
glGetString - работает только в опенгл.


Отправлено Дядя Миша 25-10-2007 в 13:24:

Troll вообще-то d3d render в халфе нет.
есть FakeGL клиент, преобразующий ogl запросы в d3d команды.
И проверка это неправильная в данном случае, я уже объяснил почему.


Отправлено Тренсфер 25-10-2007 в 14:25:

Ну раз не будет на том режиме работать так зачем проверять? Тогода ведь игрок может и не заметить наш туман не влючив опегл и тогда все старания с туманом будут равны 0. Или отключить намеренно, пройдя игру слишком просто.
Я видал кучу обзоров на сити 17 где Иоанн часто говорил о том что замечал туман только когда проходил моды на третий раз влючив опегл.
Но тут уже личные требвания программиста, о вскусах не спорят Кто-то гонится за размером диллок, кто то за скоростью выполнения, кто-то за серх графикой, кто-то за физикой... Каждый вибирает то что ему нравится, на пример лично для одного меня больше нравится без проверок , вылет на совт варе для меня лучше чем невидимыйтуман.

Добавлено 25-10-2007 в 18:25:

Дядя Миша Спасибо за проверку -учту в туторе.

__________________
Хотелось бы, чтобы не только хотелось...


Отправлено XaeroX 25-10-2007 в 16:03:

Цитата:
Дядя Миша писал:
вообще-то d3d render в халфе нет.
есть FakeGL клиент, преобразующий ogl запросы в d3d команды.

да есть он там, есть
никто там огл запросы не преобразует, что ты за ерунду пишешь

__________________

xaerox on Vivino


Отправлено Troll 25-10-2007 в 20:38:

Цитата:
XaeroX писал:
Цитата:
Дядя Миша писал:
вообще-то d3d render в халфе нет.
есть FakeGL клиент, преобразующий ogl запросы в d3d команды.

да есть он там, есть
никто там огл запросы не преобразует, что ты за ерунду пишешь


Во-во, у меня аж вот так произошло

Цитата:
Дядя Миша писал:
Неправильная это проверка. Hardware еще не указывает явно рендерим мы в d3d или в gl.
вот так проверять надо

code:
//Check video mode
if (glGetString(GL_RENDERER))
{
}


Это у тебя она совершенно неправильная. Читай прошлую страницу - мы сначала проверяем на то что этот код будет исполнятся хотябы в одном из трёх рендеров.
Он правилен у тебя лишь тем что он просто невыполнится, так как не эта "gl" ненайдётся, об этом чуть ниже.

if(!IEngineStudio.IsHardware())
return 0;

Если true то мы разумеется исполняем код дальше и у нас остаётся только два рендера + плюс движок не делает лишнюю работу. Дальше почему я говорил использовать
oEngfuncs.pTriAPI->Fog(fogColor,fStart,fEnd,1);
Поскольку если протрейсить этот< туман то можно увидеть что в d3d он возвращает ноль (невыполняется функция).
Вызывая любую gl функцию на d3d мы получим либо крах либо ничего не получим, поскольку библиотека даже и не находится в процессе HL.

Вообще как я делаю -
Есть два буля
static bool d3d = true;
static bool opengl = false;
Если в модуле HL я обнаруживаю модуль opengl32.dll, то следовательно я выставляю их наоборот.
Далее пример функции -
void DrawGlFog();
void DrawD3dFog();
if(opengl)
DrawFog();
else if(d3d)
DrawD3dFog();

Что-то такого рода. Да и если мне говорится что EngStudio.IsHardware == false, я просто кидаю юзеру мессаджбокс: мол, переставь режим детка


Отправлено XaeroX 26-10-2007 в 02:09:

Цитата:
Troll писал:
Он правилен у тебя лишь тем что он просто невыполнится, так как не эта "gl" ненайдётся, об этом чуть ниже

Не понял смысла утверждения. Кто не выполнится? Это один из вариантов проверки, запущен ли OpenGL, если нет, то glGetString вернет NULL.

Добавлено 26-10-2007 в 09:09:

Цитата:
Troll писал:
DrawD3dFog

А как ты рисуешь D3D Fog? Вроде как нельзя получить доступ к халфовским СОМ-интерфейсам типа IDirect3DDevice7 и т.п.?

__________________

xaerox on Vivino


Отправлено Troll 26-10-2007 в 04:21:

Короче говоря это я спросоня писал, опять таки забыл про то что у меня в этой области занятий иная специализация, вот вам и кричал яросто про то что неправильно. У меня и летают все gl
А так в вашем случае - да пожалуйста можно и так.

Цитата:
XaeroX писал:
А как ты рисуешь D3D Fog? Вроде как нельзя получить доступ к халфовским СОМ-интерфейсам типа IDirect3DDevice7 и т.п.?

Незнаю, я как уже говорил - хукаю.


Отправлено XaeroX 26-10-2007 в 06:11:

Troll хукаешь вызовы СОМ-интерфейсов??

__________________

xaerox on Vivino


Отправлено Дядя Миша 26-10-2007 в 07:45:

XaeroX докажи обратное ))))

Цитата:
Читай прошлую страницу - мы сначала проверяем на то что этот код будет исполнятся хотябы в одном из трёх рендеров.

нам его нужно выполнять лишь в одном рендерере, для которого мы его и проверям собсно.
Цитата:
Он правилен у тебя лишь тем что он просто невыполнится, так как не эта "gl" ненайдётся

смиялсо


Отправлено XaeroX 26-10-2007 в 12:50:

Цитата:
Дядя Миша писал:
докажи обратное ))))

Теоретически можно сделать декомпиляцию хв.длл старых версий, где она была нормальной дллкой... Но мне некогда

__________________

xaerox on Vivino


Отправлено Дядя Миша 26-10-2007 в 14:16:

XaeroX держи образчик fakeGL клиента, чтобы не быть голословным.


Отправлено XaeroX 26-10-2007 в 15:11:

Дядя Миша если ты это имел в виду, то да, согласен, скорее всего в хл так и сделано

__________________

xaerox on Vivino


Временная зона GMT. Текущее время 12:08. Страницы (4): « 1 2 [3] 4 »
Показать все 57 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024