Сообщения на форуме пользователя Andrey (130 стр.)
Pray & OpenGL | 20 сен. 2007 | 12:53 | #16 |
---|
Джо
>Через полторы недели всё уберут, зуб даю!
а подробнее можно???
>Через полторы недели всё уберут, зуб даю!
а подробнее можно???
как сделан ландшафт в FarCry? | 20 сен. 2007 | 11:06 | #20 |
---|
heihachi
>>Я бы в твоем случае рисовал в один динамический буфер несколькими батчами
>эт как?
хранишь в каждом блоке смещение вершин и стартовфйй индекс вершины... перед отрисовкой ландшафта выставляешь IDirect3DDevice9::SetStreamSource 1 раз
а потом если виден кусок рендеришь его через
IDirect3DDevice9::DrawIndexedPrimitive.
Советую побить ландшафт на дерево (Quadtree) иначе линейная пробежка в цикле по проверке 256 блоков(а если их буддет больше????)
не очень хорошая идея.
Если не получится на таком объяснении дам подробный кусок кода.
>>Я бы в твоем случае рисовал в один динамический буфер несколькими батчами
>эт как?
хранишь в каждом блоке смещение вершин и стартовфйй индекс вершины... перед отрисовкой ландшафта выставляешь IDirect3DDevice9::SetStreamSource 1 раз
а потом если виден кусок рендеришь его через
IDirect3DDevice9::DrawIndexedPrimitive.
Советую побить ландшафт на дерево (Quadtree) иначе линейная пробежка в цикле по проверке 256 блоков(а если их буддет больше????)
не очень хорошая идея.
Если не получится на таком объяснении дам подробный кусок кода.
GL подключение расширений | 17 сен. 2007 | 16:20 | #7 |
---|
0r@ngE
а я пишу только использую glew т.к. есть задачи поважней, чем изобретать примитивный велосипед инициализации расширений, которым некоторые так ujhlzncz ;)
ладно без обид глупый разговор в общем.
а я пишу только использую glew т.к. есть задачи поважней, чем изобретать примитивный велосипед инициализации расширений, которым некоторые так ujhlzncz ;)
ладно без обид глупый разговор в общем.
GL подключение расширений | 17 сен. 2007 | 16:16 | #5 |
---|
0r@ngE
>а оптимизация - тоже маяние ерундой? или что ты называешь ерундой? ручной труд и желание во всем разобраться?
какая тут нафиг оптимизация? и с чем разобираться? с wglGetProcAddress которые ты пишешь сотни? что тут сложного? и что тебе даст этот опыт в написании сотен вызовов ??? мне прям смешно...
>а оптимизация - тоже маяние ерундой? или что ты называешь ерундой? ручной труд и желание во всем разобраться?
какая тут нафиг оптимизация? и с чем разобираться? с wglGetProcAddress которые ты пишешь сотни? что тут сложного? и что тебе даст этот опыт в написании сотен вызовов ??? мне прям смешно...
GL подключение расширений | 17 сен. 2007 | 14:41 | #3 |
---|
0r@ngE
>настораживает, а вообще - инициализируй нужные тебе расширения вручную
у тебя больше нет задач, что ты инициализируешь расширения вручную? маятся же люди ерундой.. glewInit() и забыл про все...
>настораживает, а вообще - инициализируй нужные тебе расширения вручную
у тебя больше нет задач, что ты инициализируешь расширения вручную? маятся же люди ерундой.. glewInit() и забыл про все...
Интерполяция LOD’ ов | 13 сен. 2007 | 14:24 | #7 |
---|
Scorpion_Max_St
>Но разве при таком подходе смена лод не будет заметна?
все зависит от сложности сцены. И от настройки лодов. В некторых играх это заметно. Мои исследования Far Cry это доказали. Я насчиатл там около 4-5 уровней для деревьев самый последний BillBoard'ы. Если у тебя куча деревьев около 20 штук вдалеке то за счет загруженности сцены это будет не заметно. Подход к смене лодов применим кстати для шейдеров и материалов. например сдалека у меня не качается трава и отключается бамп-маппинг. Но тут только 1 лод. Можно упростить шейдер для растояния. Лоды есть и для просчета AI.
>Но разве при таком подходе смена лод не будет заметна?
все зависит от сложности сцены. И от настройки лодов. В некторых играх это заметно. Мои исследования Far Cry это доказали. Я насчиатл там около 4-5 уровней для деревьев самый последний BillBoard'ы. Если у тебя куча деревьев около 20 штук вдалеке то за счет загруженности сцены это будет не заметно. Подход к смене лодов применим кстати для шейдеров и материалов. например сдалека у меня не качается трава и отключается бамп-маппинг. Но тут только 1 лод. Можно упростить шейдер для растояния. Лоды есть и для просчета AI.
Интерполяция LOD’ ов | 12 сен. 2007 | 21:51 | #3 |
---|
Scorpion_Max_St
делаешь массив sub мешей и хранишь квадрат расстояния для каждого sub меша шаг между уровнями надо подбирать индивидуально.
при острисовке смотришьо квадрат растояния и ищещь в массиве подходящий sub мешь. Чем больше sub мешей тем мнее заметна смена детализации. обычно 5 уровней должно хватить.
делаешь массив sub мешей и хранишь квадрат расстояния для каждого sub меша шаг между уровнями надо подбирать индивидуально.
при острисовке смотришьо квадрат растояния и ищещь в массиве подходящий sub мешь. Чем больше sub мешей тем мнее заметна смена детализации. обычно 5 уровней должно хватить.
Библиотека для оптимизации меша | 10 сен. 2007 | 13:07 | #8 |
---|
glUseProgramObjectARB(0) ; жуткие тормоза | 6 сен. 2007 | 21:30 | #5 |
---|
Kavis
ты можешь в своем глюкавом Delphi убрать галочку "Use dynamic RTL" а то не хватает rtl70.bpl
ты можешь в своем глюкавом Delphi убрать галочку "Use dynamic RTL" а то не хватает rtl70.bpl
Cg - ddx, ddy | 6 сен. 2007 | 21:27 | #1 |
---|
venomous
ну почитай в DirectX SDK т.к. Cg == HLSL
ну почитай в DirectX SDK т.к. Cg == HLSL
Наитупейший вопрос о рендеринге индор сцен | 28 авг. 2007 | 18:40 | #10 |
---|
Nappster
>Теперь меня интересует как можно задать портал... Если есть идеи то поделитесь
порталы раставляют дизайнеры на уровне. Портал задается просто списком точек хранящихся в файле.
при загрузке портала и файла просто формируется массив точек. При изменении орниентации камеры и при видиости портала идет пересчет плоскостей.Все просто. Точки портала можно выцеплять из того-же 3DS Max.
>Мне хотелось бы сделать прямоугольные порталы для начала
ну число вершин не имеет значение хранится массив. хотя слишком сложный проемы портатолов лучше апроксимировать прямоугольникм дабы не загружать CPU пересчетом большего числа плоскостей.
>Как мне грамотно сгенерить портальный фрустум? Чето все глючит в той статье что расположена здесь. Если есть у кого семпл поделитесь.
Отличная статья. Спасибо Джо.
все там окей, ты не смог перевести код c Delphi на C++?
1 из глюков замеченный мной это вроде-бы нету учета ориентации портала относительно взгляда.Но я могу ошибаться.
Код статьи вполне нормальный конечно требует переработки и адаптации к конкретному проекту.
>Идет злобный глюк. То видит то не видит :(
Тестируй конкретный AABB и конкретный портал в тестовом проекте как найдешь ошибки тогда переноси в движок.
>Теперь меня интересует как можно задать портал... Если есть идеи то поделитесь
порталы раставляют дизайнеры на уровне. Портал задается просто списком точек хранящихся в файле.
при загрузке портала и файла просто формируется массив точек. При изменении орниентации камеры и при видиости портала идет пересчет плоскостей.Все просто. Точки портала можно выцеплять из того-же 3DS Max.
>Мне хотелось бы сделать прямоугольные порталы для начала
ну число вершин не имеет значение хранится массив. хотя слишком сложный проемы портатолов лучше апроксимировать прямоугольникм дабы не загружать CPU пересчетом большего числа плоскостей.
>Как мне грамотно сгенерить портальный фрустум? Чето все глючит в той статье что расположена здесь. Если есть у кого семпл поделитесь.
Отличная статья. Спасибо Джо.
все там окей, ты не смог перевести код c Delphi на C++?
1 из глюков замеченный мной это вроде-бы нету учета ориентации портала относительно взгляда.Но я могу ошибаться.
Код статьи вполне нормальный конечно требует переработки и адаптации к конкретному проекту.
>Идет злобный глюк. То видит то не видит :(
Тестируй конкретный AABB и конкретный портал в тестовом проекте как найдешь ошибки тогда переноси в движок.
Холивар: cout vs. printf | 27 авг. 2007 | 11:05 | #21 |
---|
KyberAlex
snprintf более безопасен.
snprintf более безопасен.
dynamic_cast - good or evil? | 16 авг. 2007 | 23:48 | #3 |
---|
V0id
>З.Ы. Попутно: история спора - есть движок, и интерфейс ИРендерСистема. Есть ЖЛ и ДХ имплементация этой самой системы. Ну, и, возьмем, скажем, текстуры. Как >не крути будет интерфейс ИТекстура и сабкласс, специфичный для ЖЛа и ДХа. Без кастов тут, видимо, просто никак. Есть какие-то здравые варианты >"безкастового" (не войд*, не ЭНИ, не гетТип(), итд) решения?
Вот тебье пример решения. Ту и безопасность типов и обработка ошибок. И быстродействие не очень страдает.
>З.Ы. Попутно: история спора - есть движок, и интерфейс ИРендерСистема. Есть ЖЛ и ДХ имплементация этой самой системы. Ну, и, возьмем, скажем, текстуры. Как >не крути будет интерфейс ИТекстура и сабкласс, специфичный для ЖЛа и ДХа. Без кастов тут, видимо, просто никак. Есть какие-то здравые варианты >"безкастового" (не войд*, не ЭНИ, не гетТип(), итд) решения?
Вот тебье пример решения. Ту и безопасность типов и обработка ошибок. И быстродействие не очень страдает.
class ITexture { protected: ITexture(); public: virtual ~ITexture(); }; class Direct3DTexture : public ITexture { private: IDirect3DTexture9* texture; public: IDirect3DTexture* Get() const { return texture; } }; class OpenGLTexture : public ITexture { private: unsigned int text; public: unsigned int Get() const { return texture; } } void Direct3DRender::SetTexture(const ITexture* texture, int stage) { #ifdef _DEBUG try { IDirect3DTexture *tex = dynamic_cast<const Direct3DTexture*>(texture)->Get(); pDevice->SetTexture(stage, tex); } catch(const std::exception& ex) { Log->Add(ex.what(); } #else IDirect3DTexture *tex = static_cast<const Direct3DTexture*>(texture)->Get(); pDevice->SetTexture(stage, tex); #endif } void OpenGLRender::SetTexture(const ITexture* texture) { #ifdef _DEBUG try { unsighned int tex = static_cast<const OpenGLTexture*>(texture)->Get(); glActiveTextureARB(...); glBindTexture(tex); } catch(const std::exception& ex) { Log->Add(ex.what(); } #else unsighned int tex = static_cast<const OpenGLTexture*>(texture)->Get(); glActiveTextureARB(...); glBindTexture(tex); #endif }
HLSL. PS версий 1_x не компилится. | 16 авг. 2007 | 23:38 | #8 |
---|
SunnyDay
>Вроде d3dx9_31.dll в папку с программой кинул, нашёл флаг компиляции "D3DXSHADER_USE_LEGACY_D3DX9_31_DLL", а всё равно пиксельные шейдеры 1_x не >компилятся. Помогите!
Как не компилятся? ты вроде вусе правильно сделал. У меня все работает.
может что-то с D3DX RunTime????
>Вроде d3dx9_31.dll в папку с программой кинул, нашёл флаг компиляции "D3DXSHADER_USE_LEGACY_D3DX9_31_DLL", а всё равно пиксельные шейдеры 1_x не >компилятся. Помогите!
Как не компилятся? ты вроде вусе правильно сделал. У меня все работает.
может что-то с D3DX RunTime????
HLSL. PS версий 1_x не компилится. | 16 авг. 2007 | 20:29 | #3 |
---|
SunnyDay
надо поставуить флаг что-то ...Legacy..
и положить 31 dll
надо поставуить флаг что-то ...Legacy..
и положить 31 dll