Сообщения на форуме пользователя Andrey (119 стр.)
Вода и шейдер | 17 янв. 2008 | 10:58 | #68 |
---|
Osiris
покажи как ты текстуру создаешь m_pTextureHeight для Render Target'а
у нее какой формат? должен быть D3DFMT_D24S8 как и при создании DepthStensil
>А каким образом он должен очищаться, у меня действительно нет никакой очистки, по карйней мере я не вижу - превел единственное место, где используется depth stencil surface.
попробуй поставить
покажи как ты текстуру создаешь m_pTextureHeight для Render Target'а
у нее какой формат? должен быть D3DFMT_D24S8 как и при создании DepthStensil
>А каким образом он должен очищаться, у меня действительно нет никакой очистки, по карйней мере я не вижу - превел единственное место, где используется depth stencil surface.
попробуй поставить
pDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); // РАБОТАЕМ С ЭФФЕКТОМ КАРТЫ ВЫСОТ .... |
Вода и шейдер | 16 янв. 2008 | 19:29 | #63 |
---|
Osiris
DX Debug что говорит?
DX Debug что говорит?
Вода и шейдер | 16 янв. 2008 | 18:46 | #56 |
---|
Osiris
TotemLog.log:
TotemLog_w1.log:
TotemLog.log:
Wed Jan 16 18:28:52 2008 Begin Wed Jan 16 18:28:52 2008 CDX9E3DEngine::Run() Wed Jan 16 18:28:52 2008 CDX9E3DEngine::InitInterfaces(): OK Wed Jan 16 18:28:52 2008 CDX9E3Dapp::InitialD3D(): OK Wed Jan 16 18:28:52 2008 CDX9E3DRender::CheckWindowMode(): OK Wed Jan 16 18:28:52 2008 CDX9E3DApp::CreateWnd(): OK Wed Jan 16 18:28:52 2008 Processor: Intel(R) Pentium(R) 4 CPU 3.00GHz Wed Jan 16 18:28:52 2008 Video: NVIDIA GeForce 6600 Wed Jan 16 18:28:52 2008 Pixel Shader: 3.0 Wed Jan 16 18:28:52 2008 Vertex Shader: 3.0 Wed Jan 16 18:28:52 2008 Max Texture Width: 4096 Wed Jan 16 18:28:52 2008 Max Texture Height: 4096 Wed Jan 16 18:28:52 2008 Texture format D3DFMT_A8R8G8B8 :YES Wed Jan 16 18:28:52 2008 Texture format D3DFMT_A16B16G16R16 :YES Wed Jan 16 18:28:52 2008 Texture format D3DFMT_L16 :YES Wed Jan 16 18:28:52 2008 Depth stencil surface format D3DFMT_D24S8 :YES Wed Jan 16 18:28:52 2008 Window mode: 1 Wed Jan 16 18:28:52 2008 Resolution X: 1024 Wed Jan 16 18:28:52 2008 Resolution Y: 768 Wed Jan 16 18:28:52 2008 Multisample Type: 0 Wed Jan 16 18:28:52 2008 CDX9E3DRender::InitialD3DDevice(): OK Wed Jan 16 18:28:52 2008 CDX9E3Dinput::InputInit(): OK Wed Jan 16 18:28:52 2008 CDX9E3Dinput::KeyboardInit(): OK Wed Jan 16 18:28:52 2008 CDX9E3Dinput::MouseInit(): OK Wed Jan 16 18:28:52 2008 CDX9E3DScene::InitFPSCounter(): OK Wed Jan 16 18:28:52 2008 CDX9E3DScene::InitScreenText(): OK Wed Jan 16 18:28:52 2008 CDX9E3DScene::InitGrahicsResManager(): OK Wed Jan 16 18:28:52 2008 CDX9E3DScene::InitCameraManager(): OK Wed Jan 16 18:28:52 2008 CDX9E3DScene::InitSceneTree(): OK Wed Jan 16 18:28:52 2008 CDX9E3DScene::InitLightManager(): OK Wed Jan 16 18:28:52 2008 CDX9E3DScene::InitRenderSystem(): OK Wed Jan 16 18:28:52 2008 CDX9E3DScene::InitGUIManager(): OK Wed Jan 16 18:28:52 2008 CScene::Init() : Begin Wed Jan 16 18:28:52 2008 CDX9E3DScene::CreateSceneTree(): OK Wed Jan 16 18:28:52 2008 CScene::Init() : Create GUI Wed Jan 16 18:28:52 2008 CDX9E3DActiveWater::Init() : InitBuffers() Wed Jan 16 18:28:52 2008 CDX9E3DActiveWater::Init() : LoadManagedTextures() Wed Jan 16 18:28:52 2008 CDX9E3DActiveWater::Init() : InitNoise() Wed Jan 16 18:28:52 2008 CDX9E3DActiveWater::Init() : LoadEffects() Wed Jan 16 18:28:53 2008 CScene::Init() : End Wed Jan 16 18:28:53 2008 CDX9E3DEngine::Run() : Start Main Loop Wed Jan 16 18:28:58 2008 CDX9E3DEngine::Run() : Release Wed Jan 16 18:28:58 2008 End |
Wed Jan 16 18:28:35 2008 Begin Wed Jan 16 18:28:35 2008 CDX9E3DEngine::Run() Wed Jan 16 18:28:35 2008 CDX9E3DEngine::InitInterfaces(): OK Wed Jan 16 18:28:35 2008 CDX9E3Dapp::InitialD3D(): OK Wed Jan 16 18:28:35 2008 CDX9E3DRender::CheckWindowMode(): OK Wed Jan 16 18:28:35 2008 CDX9E3DApp::CreateWnd(): OK Wed Jan 16 18:28:35 2008 Processor: Intel(R) Pentium(R) 4 CPU 3.00GHz Wed Jan 16 18:28:35 2008 Video: NVIDIA GeForce 6600 Wed Jan 16 18:28:35 2008 Pixel Shader: 3.0 Wed Jan 16 18:28:35 2008 Vertex Shader: 3.0 Wed Jan 16 18:28:35 2008 Max Texture Width: 4096 Wed Jan 16 18:28:35 2008 Max Texture Height: 4096 Wed Jan 16 18:28:35 2008 Texture format D3DFMT_A8R8G8B8 :YES Wed Jan 16 18:28:35 2008 Texture format D3DFMT_A16B16G16R16 :YES Wed Jan 16 18:28:35 2008 Texture format D3DFMT_L16 :YES Wed Jan 16 18:28:35 2008 Depth stencil surface format D3DFMT_D24S8 :YES Wed Jan 16 18:28:35 2008 Window mode: 1 Wed Jan 16 18:28:35 2008 Resolution X: 1024 Wed Jan 16 18:28:35 2008 Resolution Y: 768 Wed Jan 16 18:28:35 2008 Multisample Type: 0 Wed Jan 16 18:28:35 2008 CDX9E3DRender::InitialD3DDevice(): OK Wed Jan 16 18:28:35 2008 CDX9E3Dinput::InputInit(): OK Wed Jan 16 18:28:35 2008 CDX9E3Dinput::KeyboardInit(): OK Wed Jan 16 18:28:35 2008 CDX9E3Dinput::MouseInit(): OK Wed Jan 16 18:28:35 2008 CDX9E3DScene::InitFPSCounter(): OK Wed Jan 16 18:28:35 2008 CDX9E3DScene::InitScreenText(): OK Wed Jan 16 18:28:35 2008 CDX9E3DScene::InitGrahicsResManager(): OK Wed Jan 16 18:28:35 2008 CDX9E3DScene::InitCameraManager(): OK Wed Jan 16 18:28:35 2008 CDX9E3DScene::InitSceneTree(): OK Wed Jan 16 18:28:35 2008 CDX9E3DScene::InitLightManager(): OK Wed Jan 16 18:28:35 2008 CDX9E3DScene::InitRenderSystem(): OK Wed Jan 16 18:28:35 2008 CDX9E3DScene::InitGUIManager(): OK Wed Jan 16 18:28:35 2008 CScene::Init() : Begin Wed Jan 16 18:28:35 2008 CDX9E3DScene::CreateSceneTree(): OK Wed Jan 16 18:28:35 2008 CScene::Init() : Create GUI Wed Jan 16 18:28:35 2008 CDX9E3DActiveWater::Init() : InitBuffers() Wed Jan 16 18:28:35 2008 CDX9E3DActiveWater::Init() : LoadManagedTextures() Wed Jan 16 18:28:35 2008 CDX9E3DActiveWater::Init() : InitNoise() Wed Jan 16 18:28:35 2008 CDX9E3DActiveWater::Init() : LoadEffects() Wed Jan 16 18:28:36 2008 CScene::Init() : End Wed Jan 16 18:28:36 2008 CDX9E3DEngine::Run() : Start Main Loop Wed Jan 16 18:28:50 2008 CDX9E3DEngine::Run() : Release Wed Jan 16 18:28:50 2008 End |
Вода и шейдер | 16 янв. 2008 | 18:29 | #54 |
---|
Osiris
6600 вода мигнула на первом кадре. Потом воды не было. 20 FPS обе программы.
6600 вода мигнула на первом кадре. Потом воды не было. 20 FPS обе программы.
Каких ключевых слов нет в ваших С++ проектах? :). | 14 янв. 2008 | 20:17 | #129 |
---|
jaguard
alex19921992
All
с каких это пор это ключевые слова C++???
alex19921992
All
except/finally
Каких ключевых слов нет в ваших С++ проектах? :). | 14 янв. 2008 | 20:04 | #127 |
---|
не использую только
в различных режимах компиляции либо с макросами условной компиляции
остальное использую все
volatile explicit goto throw delete delete [] - в очень редком случае(скоро не будет)
try catch dynamic_cast
Quadtree | 14 янв. 2008 | 12:46 | #40 |
---|
slava_mib
спасибо за подробности...
Zeux
ага выкачал я это когда-то буду разбираться
спасибо за подробности...
Zeux
ага выкачал я это когда-то буду разбираться
Quadtree | 14 янв. 2008 | 10:37 | #37 |
---|
slava_mib
>2) берёшь ближайшие к камере несколько штук (только попадающие во фрустум)
объекты? несколько это соколько?
>вдоль каждой внешней (в проекции на экран) грани куба строишь плоскость (2 точки грани + третья точка это положение камеры)
я не понял что с этой плоскоcтью делать дельше?
>4) получаешь фрюстум загораживания дома, ближняя его плоскость может вычисляться поразному, самое простое - взять дальнюю из точек на гранях
а дальняя плоскость это плоскость frustum камеры?
а подробное опиcание в каком документе есть?
AleksGusarov
объекты лучше хранить отдельно, а не большой моделью... либо в твоем случае как-то "выдирать" из большой модели куски геометрии являющиеся объектами
>2) берёшь ближайшие к камере несколько штук (только попадающие во фрустум)
объекты? несколько это соколько?
>вдоль каждой внешней (в проекции на экран) грани куба строишь плоскость (2 точки грани + третья точка это положение камеры)
я не понял что с этой плоскоcтью делать дельше?
>4) получаешь фрюстум загораживания дома, ближняя его плоскость может вычисляться поразному, самое простое - взять дальнюю из точек на гранях
а дальняя плоскость это плоскость frustum камеры?
а подробное опиcание в каком документе есть?
AleksGusarov
объекты лучше хранить отдельно, а не большой моделью... либо в твоем случае как-то "выдирать" из большой модели куски геометрии являющиеся объектами
как ефективно сортировать партиклы? | 10 янв. 2008 | 20:08 | #23 |
---|
Loriol
ты пробовал std::sort от STLPort с вычислением квадрата расстояния и массив указателей нужно сортировать, ужас у тебя там на одном копировании все ляжет,
смотрел на размер своей струкруры партиклей???
ты пробовал std::sort от STLPort с вычислением квадрата расстояния и массив указателей нужно сортировать, ужас у тебя там на одном копировании все ляжет,
смотрел на размер своей струкруры партиклей???
Quadtree | 10 янв. 2008 | 19:59 | #27 |
---|
AleksGusarov
рекомендую забить на glBegin()/glEnd() в современных движка где есть OpenGL функций glVertex/glNormal/glTexCoord вообще не должно быть, или ты хочешь что-бы проц был перегружен по "самое небалуйся"?
рекомендую забить на glBegin()/glEnd() в современных движка где есть OpenGL функций glVertex/glNormal/glTexCoord вообще не должно быть, или ты хочешь что-бы проц был перегружен по "самое небалуйся"?
Quadtree | 9 янв. 2008 | 13:03 | #17 |
---|
AleksGusarov
иерархия окружающих объемов. остальное ищи в сети тут на сайте еще в терминах есть.
иерархия окружающих объемов. остальное ищи в сети тут на сайте еще в терминах есть.
Quadtree | 9 янв. 2008 | 11:07 | #14 |
---|
AleksGusarov
>Все понятно, но как 3 и 4 пункт реализовать?
Пихай данные для рендеринга примерно в такую структуру данных.
заведи массив RenderData(можно std::hash_map/std::map) по числу материалов
алгоритм сортировки простой: пришел батч с материалом. Ищем в массиве такой материал, если нет, то добавляем новую структуру, если есть то добавляем данные для рендеринга в него.
минимальные переключения можно делать путем написания менеджера текстур который проверяет ну дублирование установок текстур.
>Все понятно, но как 3 и 4 пункт реализовать?
Пихай данные для рендеринга примерно в такую структуру данных.
struct RenderData { // материал Material *mat; // тут будет все что нужнро для glDrawElements(как я понял пишешь на OpenGL) std::vector<GeometryData> geometryData; .... };
алгоритм сортировки простой: пришел батч с материалом. Ищем в массиве такой материал, если нет, то добавляем новую структуру, если есть то добавляем данные для рендеринга в него.
минимальные переключения можно делать путем написания менеджера текстур который проверяет ну дублирование установок текстур.
itoa меня посылает | 8 янв. 2008 | 6:22 | #12 |
---|
ITIhonov
>С какого перепугу она вдруг нестандартной-то стала? Deprecated, да. Но нестандартной?
это не ANSI C, нет гарантий переносимости на другие платформы и компиляторы, как в случае sprintf/snprintf
>С какого перепугу она вдруг нестандартной-то стала? Deprecated, да. Но нестандартной?
это не ANSI C, нет гарантий переносимости на другие платформы и компиляторы, как в случае sprintf/snprintf
itoa меня посылает | 8 янв. 2008 | 2:08 | #10 |
---|
keltar
>Это нестандартная функция, use sprintf/snprintf.
эх она то нестандартная но быстрее ANSI C sprintf/snprintf :(
у себя забил ее макросами #ifdef _WIN32....
>Это нестандартная функция, use sprintf/snprintf.
эх она то нестандартная но быстрее ANSI C sprintf/snprintf :(
у себя забил ее макросами #ifdef _WIN32....
Quadtree | 8 янв. 2008 | 1:58 | #4 |
---|
AleksGusarov
делал как-то я пару лет назад как ты 1 большую модель с ландшафтом с деревьями и т.д.(70000 поликов) все загонял в 1 вершинный буфер и рендерил по кускам правда там было Octree.
>как разбивать модель на части, как оптимально осуществлять отрисовку вычисленно-видимых частей модели при наличии в >модели большого числа разных материалов(разные текстуры для разных групп полигонов).
подробный алгоритм такой: ходишь по поверхностям(группа полигонов принадлежащих 1 материалу)
1) проверяешь полигон на попадание в узел(тут смотреть нужно сразу ситуацию попадает полностью/частично-> резать плоскостями либо дублировать/помечать и т.д.);
2) заносишь в узел;
3) проверка числа поликов в узле, если условие рекурсии прекратилось, то узел это лист. А теперь самое важное:
В этом случае сохраняешь в листе информацию для рендеринга, а именно число вершин(нужных для отрисовки этого листа), смещение внутри вершинного буфера, стартовый индекс и число полигонов. Первые 2 параметра нужны исключительно для случая если используешь Direct3D, т.е. для IDirect3DDevice9::DrawIndexedPrimitive, если ты используешь OpenGL то для glDrawElements/glDrawRangeElements это не нужно.
4) повторяем пока не прошли все полигоны, иначе конец.
При добавлении каждого полигона нужно учитывать к какой поверхности он принадлежит тут уже зависит конкретно от твоей реализации.
Вродибы понятно объяснил Если что непонятно спрашивай, объясню глубже и подробней.
делал как-то я пару лет назад как ты 1 большую модель с ландшафтом с деревьями и т.д.(70000 поликов) все загонял в 1 вершинный буфер и рендерил по кускам правда там было Octree.
>как разбивать модель на части, как оптимально осуществлять отрисовку вычисленно-видимых частей модели при наличии в >модели большого числа разных материалов(разные текстуры для разных групп полигонов).
подробный алгоритм такой: ходишь по поверхностям(группа полигонов принадлежащих 1 материалу)
1) проверяешь полигон на попадание в узел(тут смотреть нужно сразу ситуацию попадает полностью/частично-> резать плоскостями либо дублировать/помечать и т.д.);
2) заносишь в узел;
3) проверка числа поликов в узле, если условие рекурсии прекратилось, то узел это лист. А теперь самое важное:
В этом случае сохраняешь в листе информацию для рендеринга, а именно число вершин(нужных для отрисовки этого листа), смещение внутри вершинного буфера, стартовый индекс и число полигонов. Первые 2 параметра нужны исключительно для случая если используешь Direct3D, т.е. для IDirect3DDevice9::DrawIndexedPrimitive, если ты используешь OpenGL то для glDrawElements/glDrawRangeElements это не нужно.
4) повторяем пока не прошли все полигоны, иначе конец.
При добавлении каждого полигона нужно учитывать к какой поверхности он принадлежит тут уже зависит конкретно от твоей реализации.
Вродибы понятно объяснил Если что непонятно спрашивай, объясню глубже и подробней.