Сообщения на форуме пользователя Andrey (26 стр.)
C++, VC, запись в таблицу виртуальных методов. | 1 дек. 2011 | 0:50 | #5 |
---|
.L
Забыл сказать весь код выложи.
Ну вот я так и думал.Это не полиморный вызов. Нету вычисления адреса виртуальной функции Нету косвенной адресации. Есть уже известный адрес функции 1391226h это уже прямой вызов точнее "this call", по адресу будет типа что-то такое:
так что твои манипуляции с адресами компилятор проигнорировал.
Кстаи код скомпилен мне кажется в Debug ибо тут есть всякие __RTC_CheckEsp
Забыл сказать весь код выложи.
01393C95 lea ecx,[foo] 01393C98 call Foo::VirtualMethod (1391226h)
VirtualMethod proc 1391226h ;начало кода функции .... ret; endp;
Кстаи код скомпилен мне кажется в Debug ибо тут есть всякие __RTC_CheckEsp
C++, VC, запись в таблицу виртуальных методов. | 1 дек. 2011 | 0:21 | #1 |
---|
.L
> Как только создал на стеке - программа продолжила работать корректно, однако
> функция не подменяется : ( ЧЯДНТ?
Покажи asm код, если я не ошибаюсь то компилятор при создании на стеке знает про все методы и наверное вызов не виртуальный.
> Как только создал на стеке - программа продолжила работать корректно, однако
> функция не подменяется : ( ЧЯДНТ?
Покажи asm код, если я не ошибаюсь то компилятор при создании на стеке знает про все методы и наверное вызов не виртуальный.
QGLContext не инициализируется | 27 ноя. 2011 | 22:10 | #1 |
---|
Q.S.
1) твоя версия Qt точно корректно держит OpenGL 3.3?
2) Пробовал продебажить зайдя в иcходный код Qt ?
если с SDL работает, то либо виновато Qt, либо его неправильное использование тобой.
1) твоя версия Qt точно корректно держит OpenGL 3.3?
2) Пробовал продебажить зайдя в иcходный код Qt ?
если с SDL работает, то либо виновато Qt, либо его неправильное использование тобой.
Cg или GLSL | 22 ноя. 2011 | 13:45 | #75 |
---|
Executor
> Тот же УБО, лейауты, атомик каунтеры да ещё куча всего, это API-specific. Cg
> тебе даст выхлоп какой-то фигни, к примеру, он расставит нужные лейауты
> юниформам или атрибутам? Сомневаюсь.
> Тебе полюбому это придётся всё править руками. Поэтому я и не вижу смысла,
> получать какой-то нечитабельный код, чтобы потом его ещё напильником
> обрабатывать, вместо того, чтобы изначально написать то, что нужно, с полным
> пониманием того, что это за код и что он делает.
Пока что он устраивает. А дальше буду смотреть. Если ничего не выйдет с выше перечисленным то естественно нужно делать без Cg.
> Тот же УБО, лейауты, атомик каунтеры да ещё куча всего, это API-specific. Cg
> тебе даст выхлоп какой-то фигни, к примеру, он расставит нужные лейауты
> юниформам или атрибутам? Сомневаюсь.
> Тебе полюбому это придётся всё править руками. Поэтому я и не вижу смысла,
> получать какой-то нечитабельный код, чтобы потом его ещё напильником
> обрабатывать, вместо того, чтобы изначально написать то, что нужно, с полным
> пониманием того, что это за код и что он делает.
Пока что он устраивает. А дальше буду смотреть. Если ничего не выйдет с выше перечисленным то естественно нужно делать без Cg.
Cg или GLSL | 22 ноя. 2011 | 12:43 | #72 |
---|
Executor
> Вижу, по той теме на НВ, что ты всё таки используешь Цг->ГЛСЛ не в рантайме. Неужели у тебя стопицот шейдеров, что тебе проще перекомпилить Цг в ГЛСЛ,
Это решение выбиралось по другим причинам, ориентироваться на число шейдеров глупо.
>чем написать красивый чистый ГЛСЛ код?
Ну а в чем смысл мне это делать? эту красоту кто будет видеть, разработчик? или драйвер которому как раз пофигу на красоту? что я с этого поимею? пописать на GLSL ??? ты просто говоришь как фанат OpenGL и не более, Cg и предназначен что-бы не делать кучу разных шейдеров, для этого я его и использую, ну а снизить нагрузку на CPU можно, и причем не так сложно, просто смущает нестандартное решение и не более того.
> Вижу, по той теме на НВ, что ты всё таки используешь Цг->ГЛСЛ не в рантайме. Неужели у тебя стопицот шейдеров, что тебе проще перекомпилить Цг в ГЛСЛ,
Это решение выбиралось по другим причинам, ориентироваться на число шейдеров глупо.
>чем написать красивый чистый ГЛСЛ код?
Ну а в чем смысл мне это делать? эту красоту кто будет видеть, разработчик? или драйвер которому как раз пофигу на красоту? что я с этого поимею? пописать на GLSL ??? ты просто говоришь как фанат OpenGL и не более, Cg и предназначен что-бы не делать кучу разных шейдеров, для этого я его и использую, ну а снизить нагрузку на CPU можно, и причем не так сложно, просто смущает нестандартное решение и не более того.
Cg или GLSL | 22 ноя. 2011 | 10:56 | #68 |
---|
fsmoke
> даже не смотрел чем автор профайлит - но разница большая все же
Автор это я, замерял QPC.
> даже не смотрел чем автор профайлит - но разница большая все же
Автор это я, замерял QPC.
Cg или GLSL | 22 ноя. 2011 | 0:44 | #64 |
---|
fsmoke
> - ну и нахрен он нужен этот cg тогда
компилятор для любого апи. Очень удобно.
> - ну и нахрен он нужен этот cg тогда
компилятор для любого апи. Очень удобно.
Cg или GLSL | 22 ноя. 2011 | 0: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...
> о каком оверхеде идет речь кстати ??
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 или GLSL | 21 ноя. 2011 | 16: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 поменять имя юниформа как ему >вздумается и он будет прав, а проект накроется. Это не есть гуд.
>Помоему куда проще написать шейдера для каждого рендера свои, чем играть в рулетку.
Фигня это все. Взял и проверил новую версию И поправил 2 строчки. Какие проблемы? Это не те проблемы что-бы с ними так заморачиваться. Если уж делать универсально то парсить по честному, а там есть эта возможность:
//var float g_fSpecularExponent : : _g_fSpecularExponent : -1 : 1
Ищем строки var float g_fSpecularExponent : далее идет измененное имя.
fsmoke
>Какой тогда смысл использовать gc - если самому анализировать его выхлопы - что за бред???
Смысл в том что он выдает результат для каждого API по одному исходному коду. А как его использовать через предоставленные механизмы по умолчанию или что-то дорабатывать это дело рук разработчика. Я лучше напишу(уже написал) несколько строк и выкину лишние cgGL + оверхед на вызовах чем буду это за собой таскать.
Кто сказал что это анализ? просто узнал измененное имя и все.
innuendo
> компилить Cg в arb - это нормально, а Cg в glsl - это ненормально :)
для кого как.
Cg или GLSL | 21 ноя. 2011 | 15:51 | #47 |
---|
innuendo
>они компилят Cg в glsl ?
Там скорее всего ARB программы. GLSL в ресурсах так и не откопал.
>они компилят Cg в glsl ?
Там скорее всего ARB программы. GLSL в ресурсах так и не откопал.
Cg или GLSL | 21 ноя. 2011 | 14:21 | #43 |
---|
Executor
> То что ты запустил, посмотрел и везде одинакого это понятно. А в документации
> об этом есть?
С чего это писать в документации? Предполагается что все будут использовать Cg вместе с Cg Run Time, а это лишний оверхед.
fsmoke
>Я cg не знаю - писал всегда на glsl - а что в cg нет встроенных механизмов для работы с юниформами?? о0 - зачем этот гемморой с угадыванием имен вообще нужен >- если вы выбрали инструмент - то зачем какие то хаки применять
Есть там все, но если ты используешь Cg Run Time. Если как результат компиляции то будь добр сам бери параметры. И это не хак, это правильное и нормальное решение. Quake Wars так и использует.
> То что ты запустил, посмотрел и везде одинакого это понятно. А в документации
> об этом есть?
С чего это писать в документации? Предполагается что все будут использовать Cg вместе с Cg Run Time, а это лишний оверхед.
fsmoke
>Я cg не знаю - писал всегда на glsl - а что в cg нет встроенных механизмов для работы с юниформами?? о0 - зачем этот гемморой с угадыванием имен вообще нужен >- если вы выбрали инструмент - то зачем какие то хаки применять
Есть там все, но если ты используешь Cg Run Time. Если как результат компиляции то будь добр сам бери параметры. И это не хак, это правильное и нормальное решение. Quake Wars так и использует.
Cg или GLSL | 21 ноя. 2011 | 13:11 | #39 |
---|
Executor
> Это гарантируется? Или же это на усмотрение Cg на что будет замена?
Это гарантируется в пределах версии Cg(а скорей всего будет одинаково в разных, сам подумай зачем им это править???). Для разных файлов делать "рандомное" изменение имен это бред.
> Это гарантируется? Или же это на усмотрение Cg на что будет замена?
Это гарантируется в пределах версии Cg(а скорей всего будет одинаково в разных, сам подумай зачем им это править???). Для разных файлов делать "рандомное" изменение имен это бред.
Cg или GLSL | 21 ноя. 2011 | 11:27 | #36 |
---|
Executor
>И как потом в выхлопе узнать какие имена юниформов будут?
Ну список переменных ты сам по идее должен знать.
к примеру bVisualizeLOD меняется на _bVisualizeLOD, меняешь имя, glGetUniformLocation и вперед. У меня работает прекрасно.
innuendo
> они от версии к версии меняются - жуть !:)
Врядли.
>И как потом в выхлопе узнать какие имена юниформов будут?
Ну список переменных ты сам по идее должен знать.
к примеру bVisualizeLOD меняется на _bVisualizeLOD, меняешь имя, glGetUniformLocation и вперед. У меня работает прекрасно.
innuendo
> они от версии к версии меняются - жуть !:)
Врядли.
Cg или GLSL | 21 ноя. 2011 | 10:40 | #33 |
---|
innuendo
> там не весь, дело до выборок так и не дошло :)
Как не весь? textureGrad разве не оно?
innuendo
> #version 150 ты поставил или Cg ?
>
> если Cg - вопросов нету :)
Нет, это я в командной строке, но без указания версии тоже компилит, с чего Cg сам версию будет ставить? на усмотрения разработчика оставили, и правильно сделали.
Executor
>А в ГЛ2 не умеет?
по ходу дела да:
> там не весь, дело до выборок так и не дошло :)
Как не весь? textureGrad разве не оно?
innuendo
> #version 150 ты поставил или Cg ?
>
> если Cg - вопросов нету :)
Нет, это я в командной строке, но без указания версии тоже компилит, с чего Cg сам версию будет ставить? на усмотрения разработчика оставили, и правильно сделали.
Executor
>А в ГЛ2 не умеет?
по ходу дела да:
выхлоп без указания версии:.
Ну что господа, каков ваш вердикт, Cg имеет права жить по выдачи достойного GLSL кода для? Ну хотя-бы до OpenGL 3.2 включительно?
Cg или GLSL | 21 ноя. 2011 | 10:17 | #29 |
---|
innuendo
выхлоп:.
выхлоп:.