В общем проблема в заголовке. Использую Ogre 1.7.2, PhysX. Все работает в режиме создания ресурсов на одной видеокарте (в настройках рендеринга DirectX). Но когда стоит создание ресурсов на всех девайсах - выдает о ошибку конца видеопамяти. У меня две 250GTS, три монитора (используются все). В логе дублируются записи (при втором случае) о загрузке текстур.
Подозреваю, что проблема заключается в следующем. У меня в скриптах материалов используются 4 схемы - по разрезам лето/зима и день/ночь. Достаточно много материалов с большими текстурами. Согласно логу они грузятся все, хотя в один запуск у меня устанавливается одна схема и она работает до завершения. Чо делать? У кого какие идеи???
NIXIUS
> Согласно логу они грузятся все, хотя в один запуск у меня устанавливается одна
> схема
Что-то тут не то.
Попробуй физически убрать другие "схемы" и посмотреть что будет и откуда они пытаются грузится.
Лог загрузки меша и назначение ему материала (схема уже установлена!)
13:45:51: Mesh: Loading flora_3_1.mesh. 13:45:51: Can't assign material Default to SubEntity of ent_0 because this Material does not exist. Have you forgotten to define it in a .material script? 13:45:51: Texture: bush_2.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 0 generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1. 13:45:51: Texture: bush_2.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 0 generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1. 13:45:51: Texture: bush_1.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 0 generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1. 13:45:51: Texture: bush_1.png: Loading 1 faces(PF_A8R8G8B8,512x512x1) with 0 generated mipmaps from Image. Internal format is PF_A8R8G8B8,512x512x1.
Скрипт материала:
abstract material material/flora/base { technique summer/day { scheme summer/day pass main { scene_blend alpha_blend alpha_rejection greater_equal 200 texture_unit main { texture $summer_day 0 } } } technique summer/night { scheme summer/night pass main { scene_blend alpha_blend alpha_rejection greater_equal 200 vertex_program_ref TxComby_1_Fara_vp { } fragment_program_ref TxComby_1_Fara_fp { param_named_auto DistanceOverride 1.0 } texture_unit main { texture $summer_night 0 } } } technique winter/day { scheme winter/day pass main { scene_blend alpha_blend alpha_rejection greater_equal 200 texture_unit main { texture $winter_day 0 } } } technique winter/night { scheme winter/night pass main { scene_blend alpha_blend alpha_rejection greater_equal 200 vertex_program_ref TxComby_1_Fara_vp { } fragment_program_ref TxComby_1_Fara_fp { param_named_auto DistanceOverride 1.0 } texture_unit main { texture $winter_night 0 } } } } material material/flora/bush/0 : material/flora/base { set $summer_day "bush_2.png" set $summer_night "bush_2.png" set $winter_day "bush_1.png" set $winter_night "bush_1.png" }
Схемы быстро убрать не могу - да тут очевидно все
А ты что mipmap-уровни не юзаешь?
NIXIUS
>>Can't assign material Default to SubEntity of ent_0
Одной части сущности ent_0 назначен материал с именем "Default". И Огр не может найти такой материал. Может есть смысл проверить меш сущности "ent_0" на корректность назначенного материала?
Или, если ты руками в коде меняешь материалы обьектов, может где-то опечатался и на сущность воткнулся стандартный дефолтовый "Default" материал?
0xdeadc0de
> Одной части сущности ent_0 назначен материал с именем "Default". И Огр не может
> найти такой материал. Может есть смысл проверить меш сущности "ent_0" на
> корректность назначенного материала?
> Или, если ты руками в коде меняешь материалы обьектов, может где-то опечатался
> и на сущность воткнулся стандартный дефолтовый "Default" материал?
Не - по логу же видно - грузится меш (у него действительно субмеш с материалом Default - о чем огр ругнулся в лог), а затем назначается материал, причем всей entity, о чем свидетельствуют последующие записи в логе (загрузка текстур).
NIXIUS
> У меня две 250GTS, три монитора (используются все
вспомнилась классика - три магнитофона, куртки замшевые ... три :)
innuendo
Обьясни шутку. На большинстве средних карт стоит один DVI и один аналоговый выход. В итоге можно включить до 4-х мониторов.
NIXIUS
Ок,
>>выдает о ошибку конца видеопамяти
что именно за ошибка? У меня нет двух видюх, и я никогда в огре такой ошибки не видел. Но насколько мне подсказывает память, почти все ресурсы в Огре грузятся как managed. И я сильно сомневаюсь, что твой код ест 2 гига памяти карты. Хотя я совсем не в курсе, как работает ресурс-менеджмент на мульти-картах, так что тут могу ошибаться.
Но, я совершенно точно помню, что Огр подгружает ресурсы при первом требовании. Т.е. если у тебя согласно логу грузятся текстуры материалов, то эти материалы кто-то будет использовать.
Плюс, Огр (не в обиду огро-юзерам) - тот еще кусок кода, который стоило бы пристрелить и запретить распространять как open source. И по этому логу (без живого кода) совсем не понятно, что именно там происходит - используется ли этот материал на обьекте, или он один раз загрузился и сразу выгрузился (последнее узнать невозможно на текущей версии огра, и сомневаюсь, что когда-нибудь будет можно)
В любом случае, даже с полным логом будет трудновато понять, что именно происходит в ядре. Универсальный выход - собери дебаг-сборку Огра, и под отладчиком посмотри, что, где, как и зачем грузится. Как бонус - быстрее поймешь, что Огр - это не то, о чем ты думал, когда качал исходники, а просто очередная надстройка над GAPI (причем сильно переоцененная)
0xdeadc0de
> Обьясни шутку. На большинстве средних карт стоит один DVI и один аналоговый
> выход. В итоге можно включить до 4-х мониторов
эх, Шпака знаешь ? :)
Тема в архиве.