GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (26 стр.)

Сообщения на форуме пользователя Andrey (26 стр.)

C++, VC, запись в таблицу виртуальных методов.1 дек. 20110:50#5
.L
Забыл сказать весь код выложи.
01393C95  lea         ecx,[foo]  
01393C98  call        Foo::VirtualMethod (1391226h)
Ну вот я так и думал.Это не полиморный вызов. Нету вычисления адреса виртуальной функции Нету косвенной адресации. Есть уже известный адрес функции  1391226h это уже прямой вызов точнее "this call", по адресу будет типа что-то такое:
                VirtualMethod proc 
1391226h ;начало кода функции
....
               ret;
               endp;
так что твои манипуляции с адресами компилятор проигнорировал.
Кстаи код скомпилен мне кажется в Debug ибо тут есть всякие __RTC_CheckEsp
C++, VC, запись в таблицу виртуальных методов.1 дек. 20110:21#1
.L
> Как только создал на стеке - программа продолжила работать корректно, однако
> функция не подменяется : ( ЧЯДНТ?
Покажи asm код, если я не ошибаюсь то компилятор при создании на стеке знает про все методы и наверное вызов не виртуальный.
QGLContext не инициализируется27 ноя. 201122:10#1
Q.S.
1) твоя версия Qt точно корректно держит OpenGL 3.3?
2) Пробовал продебажить зайдя в иcходный код Qt ?
если с SDL работает, то либо виновато Qt, либо его неправильное использование тобой.
Cg или GLSL22 ноя. 201113:45#75
Executor
> Тот же УБО, лейауты, атомик каунтеры да ещё куча всего, это API-specific. Cg
> тебе даст выхлоп какой-то фигни, к примеру, он расставит нужные лейауты
> юниформам или атрибутам? Сомневаюсь.
> Тебе полюбому это придётся всё править руками. Поэтому я и не вижу смысла,
> получать какой-то нечитабельный код, чтобы потом его ещё напильником
> обрабатывать, вместо того, чтобы изначально написать то, что нужно, с полным
> пониманием того, что это за код и что он делает.
Пока что он устраивает. А дальше буду смотреть. Если ничего не выйдет с выше перечисленным то естественно нужно делать без Cg.
Cg или GLSL22 ноя. 201112:43#72
Executor
> Вижу, по той теме на НВ, что ты всё таки используешь Цг->ГЛСЛ не в рантайме. Неужели у тебя стопицот шейдеров, что тебе проще перекомпилить Цг в ГЛСЛ,
Это решение выбиралось по другим причинам, ориентироваться на число шейдеров глупо.
>чем написать красивый чистый ГЛСЛ код?
Ну а в чем смысл мне это делать? эту красоту кто будет видеть, разработчик? или драйвер которому как раз пофигу на красоту? что я с этого поимею? пописать на GLSL ??? ты просто говоришь как фанат OpenGL и не более, Cg и предназначен что-бы не делать кучу разных шейдеров, для этого я его и использую, ну а снизить нагрузку на CPU можно, и причем не так сложно, просто смущает нестандартное решение и не более того.
Cg или GLSL22 ноя. 201110:56#68
fsmoke
> даже не смотрел чем автор профайлит - но разница большая все же
Автор это я, замерял QPC.
Cg или GLSL22 ноя. 20110:44#64
fsmoke
> - ну и нахрен он нужен этот cg тогда
компилятор для любого апи. Очень удобно.
Cg или GLSL22 ноя. 20110:01#61
fsmoke
> о каком оверхеде идет речь кстати ??
http://forum-archive.developer.nvidia.com/index.php?showtopic=423… p;#entry12790
http://forum-archive.developer.nvidia.com/index.php?showtopic=459… p;#entry13741
>говорит о том что он собрался сэкономить несколько лишних колов :)))) незря он ищет юниформы ручками - эх опять на спичках экономить собрались
Ты же их знать по именам должен, дак что значит ищет?
>ЗЫ
>Алгоритмы надо оптимизировать, а не cgGL
Какие нафиг алгоритмы? CPU сидит в вызовах Cg Run Time...
тут про D3DXEffect http://blog.gamedeff.com/?p=235, такая же подобная ситуация с Cg Run Time...

Cg или GLSL21 ноя. 201116:38#52
Executor
>Это значит, что инструмент юзается на свой страх и риск, то есть при определённом стечении обстоятельств, никто не мешает Cg поменять имя юниформа как ему >вздумается и он будет прав, а проект накроется. Это не есть гуд.
>Помоему куда проще написать шейдера для каждого рендера свои, чем играть в рулетку.
Фигня это все. Взял и проверил новую версию И поправил 2 строчки. Какие проблемы? Это не те проблемы что-бы с ними так заморачиваться. Если уж делать универсально то парсить по честному, а там есть эта возможность:
//var float g_fSpecularExponent :  : _g_fSpecularExponent : -1 : 1
Ищем строки var float g_fSpecularExponent : далее идет измененное имя.
fsmoke
>Какой тогда смысл использовать gc - если самому анализировать его выхлопы - что за бред???
Смысл в том что он выдает результат для каждого API по одному исходному коду. А как его использовать через предоставленные механизмы по умолчанию или что-то дорабатывать это дело рук разработчика. Я лучше напишу(уже написал) несколько строк и выкину лишние cgGL + оверхед на вызовах чем буду это за собой таскать.
Кто сказал что это анализ? просто узнал измененное имя и все.
innuendo
> компилить Cg в arb - это нормально,  а Cg в glsl - это ненормально :)
для кого как.
Cg или GLSL21 ноя. 201115:51#47
innuendo
>они компилят Cg в glsl ?
Там скорее всего ARB программы. GLSL в ресурсах так и не откопал.
Cg или GLSL21 ноя. 201114:21#43
Executor
> То что ты запустил, посмотрел и везде одинакого это понятно. А в документации
> об этом есть?
С чего это писать в документации? Предполагается что все будут использовать Cg вместе с Cg Run Time, а это лишний оверхед.
fsmoke
>Я cg не знаю - писал всегда на glsl - а что в cg нет встроенных механизмов для работы с юниформами?? о0 - зачем этот гемморой с угадыванием имен вообще нужен >- если вы выбрали инструмент - то зачем какие то хаки применять
Есть там все, но если ты используешь Cg Run Time. Если как результат компиляции то будь добр сам бери параметры. И это не хак, это правильное и нормальное решение. Quake Wars так и использует.
Cg или GLSL21 ноя. 201113:11#39
Executor
> Это гарантируется? Или же это на усмотрение Cg на что будет замена?
Это гарантируется в пределах версии Cg(а скорей всего будет одинаково в разных, сам подумай зачем им это править???). Для разных файлов делать "рандомное" изменение имен это бред.
Cg или GLSL21 ноя. 201111:27#36
Executor
>И как потом в выхлопе узнать какие имена юниформов будут?
Ну список переменных ты сам по идее должен знать.
к примеру bVisualizeLOD меняется на _bVisualizeLOD, меняешь имя, glGetUniformLocation и вперед. У меня работает прекрасно.
innuendo
> они от версии к версии меняются - жуть !:)
Врядли.
Cg или GLSL21 ноя. 201110:40#33
innuendo
> там не весь, дело до выборок так и не дошло :)
Как не весь? textureGrad разве не оно?
innuendo
> #version 150 ты поставил или Cg ?
>
> если Cg - вопросов нету :)
Нет, это я в командной строке, но без указания версии тоже компилит, с чего Cg сам версию будет ставить? на усмотрения разработчика оставили, и правильно сделали.
Executor
>А в ГЛ2 не умеет?
по ходу дела да:

выхлоп без указания версии:.
Ну что господа, каков ваш вердикт, Cg имеет права жить по выдачи достойного GLSL кода для? Ну хотя-бы до OpenGL 3.2 включительно?

Cg или GLSL21 ноя. 201110:17#29
innuendo
выхлоп:.

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр