Сообщения на форуме пользователя Andrey (172 стр.)
Из Дельфи в Си? И из Си в Дельфи? | 7 июня 2006 | 18:01 | #157 |
---|
XProger
>А что эта мурня делает? Её даже читать противно, не говоря уже о ясности и прозрачности кода ;)
вам Delphi'стам не понять силу шаблонов. Вроде умный малый, а пишешь по ламерски по поводу прозрачности и ясночти кода понимания которого зависит от уровня программиста и языка ;).
>А что эта мурня делает? Её даже читать противно, не говоря уже о ясности и прозрачности кода ;)
вам Delphi'стам не понять силу шаблонов. Вроде умный малый, а пишешь по ламерски по поводу прозрачности и ясночти кода понимания которого зависит от уровня программиста и языка ;).
Visual С++ vs. Delphi | 7 июня 2006 | 16:48 | #2499 |
---|
Помогите с переходом D3D -> OGL | 7 июня 2006 | 13:55 | #9 |
---|
Костян
>Насколько я понял, это тоже самое что и glBegin()/glEnd() + glColor() + glTexCoord + glVertex(),
мне кажеться это будет быстрее при больших объемах данных. Явно ты в Direct3D используешь IDirect3DVertexBuffer9/IDirect3DIndexBuffer9 тогда надо в OpenGL использоать расширение ARB_vertex_buffer_object.
>но передаваемые вершины всё-равно проходят этап трансформации, т.е. значение видовой, проекционной и мировой матриц влияет на то как данные вершины будут >выглядеть на экране?
мне кажеться все будет работать как в Direct3D ты попробуй.
>Насколько я понял, это тоже самое что и glBegin()/glEnd() + glColor() + glTexCoord + glVertex(),
мне кажеться это будет быстрее при больших объемах данных. Явно ты в Direct3D используешь IDirect3DVertexBuffer9/IDirect3DIndexBuffer9 тогда надо в OpenGL использоать расширение ARB_vertex_buffer_object.
>но передаваемые вершины всё-равно проходят этап трансформации, т.е. значение видовой, проекционной и мировой матриц влияет на то как данные вершины будут >выглядеть на экране?
мне кажеться все будет работать как в Direct3D ты попробуй.
Помогите с переходом D3D -> OGL | 7 июня 2006 | 13:40 | #7 |
---|
все сводилось бы к (просто нет такой комбинации параметров вершины цвет + текстурные координаты + вершина(4 координаты))
struct QuadVertex { float tu,tv; unsigned long clr; float x,y,z,w; }; ... glInterleavedArrays(GL_T2F_C4UB_V3F, sizeof(QuadVertex), vtxes); glDrawArrays(GL_TRIANGLE_STRIP, 0, 6);
Помогите с переходом D3D -> OGL | 7 июня 2006 | 12:41 | #5 |
---|
Костян
>Как их использовать, трансформированные вершины,
вроде так-же как и в D3D, но я это не делал(могу ошибаться).
а более подробно через матрицу вида вызывая glRotatef,glTranslatef, glScalef. перед этим нужно сохранить текущую матрицу, после трансформаций востановить.
для этого используются функции glPushMatrix/glPopMatrix не забывая выбрать текущую матрицу через glMatrixMode
иными словами в Direct3D ты работаешь с мироваой матрицей через GetTrasform/SetTransform попутно сохраня в OpenGL
итак вот пример на OpenGL
аналогично чтобы было понятно на Direct3D
могу где-то ошибиться писао быстро.
>glVertex2f() это они и есть
это отображение точки на плоскости.
Спец
>да, по-моему, опасно его юзать... На моём RadeonX700 отказались работать шейдеры, к-рые работали на встроеной видяхе. Пришлось переходить на GLSL.
тут спорный вопрос.
Спец
ну, это не проблема :) можно и из одного файла собирать.
ну да это не проблема, но уже надо менять подход т.е. ты не возьмешь 2 стандартных шейдера + парамаетры и не подсунешь для загрузки , их надо как-то объеденять а потом парсить на предмет пиксельный/вершинный, что вызывет какие-то ограничения и уже не подойдет для случая HLSL тут тоже можно по разному сделать.
>Как их использовать, трансформированные вершины,
вроде так-же как и в D3D, но я это не делал(могу ошибаться).
а более подробно через матрицу вида вызывая glRotatef,glTranslatef, glScalef. перед этим нужно сохранить текущую матрицу, после трансформаций востановить.
для этого используются функции glPushMatrix/glPopMatrix не забывая выбрать текущую матрицу через glMatrixMode
иными словами в Direct3D ты работаешь с мироваой матрицей через GetTrasform/SetTransform попутно сохраня в OpenGL
итак вот пример на OpenGL
glMatrixMode(GL_VIEW); //выбираем видовую матрицу glPushMatrix();// сохраняем ее glTranslatef(1,2,3); // трансформация DrawObject(); // отображения объекта glPopMatrix(); // восстановление
D3DXMATRIX world; D3DXMATRIX res; D3DXMATRIX view; D3DXMATRIX trans; pDevice->GetTransform(D3DTS_WORLD, &world); D3DXMatrixTranslation(trans, 1, 2, 3); // трансформация D3DXMatrixMultiply(&res, &view, &trans); // изменение мировой hr = pDevice -> SetTransform(D3DTS_WORLD, &res); DrawObject(); // отображения объекта hr = pDevice -> SetTransform(D3DTS_WORLD, &world);// восстановление
>glVertex2f() это они и есть
это отображение точки на плоскости.
Спец
>да, по-моему, опасно его юзать... На моём RadeonX700 отказались работать шейдеры, к-рые работали на встроеной видяхе. Пришлось переходить на GLSL.
тут спорный вопрос.
Спец
ну, это не проблема :) можно и из одного файла собирать.
ну да это не проблема, но уже надо менять подход т.е. ты не возьмешь 2 стандартных шейдера + парамаетры и не подсунешь для загрузки , их надо как-то объеденять а потом парсить на предмет пиксельный/вершинный, что вызывет какие-то ограничения и уже не подойдет для случая HLSL тут тоже можно по разному сделать.
Помогите с переходом D3D -> OGL | 7 июня 2006 | 12:02 | #1 |
---|
Костян
1. Есть. Можно.
3. можно поробывать pBuffer читать можно тут: http://steps3d.animekazan.net/tutorials/render-to-texture-tutorial.html
4. Лучший вариант Cg к примеру Far Cry использует его(думаю очень хорогший пример проекта) тут вообще не надо шейдеры под разный API городить.
Если бы хотя-бы GLSL шейдер собирался из 1 файла то было бы проще, т.к. линковка GLSL программы идет из отдельных пиксельного шейдера и вершинного. в HLSL моджно собрать все из 1 фпайла (не пробовал из разных файлов) Синтаксис языков тоже похож. В любом случае переделка HLSL-GLSL без учета этого не сложная. Насчет
asm шейдеров вроде это постепенно уходит в прошлое...
а так думай сам.
1. Есть. Можно.
3. можно поробывать pBuffer читать можно тут: http://steps3d.animekazan.net/tutorials/render-to-texture-tutorial.html
4. Лучший вариант Cg к примеру Far Cry использует его(думаю очень хорогший пример проекта) тут вообще не надо шейдеры под разный API городить.
Если бы хотя-бы GLSL шейдер собирался из 1 файла то было бы проще, т.к. линковка GLSL программы идет из отдельных пиксельного шейдера и вершинного. в HLSL моджно собрать все из 1 фпайла (не пробовал из разных файлов) Синтаксис языков тоже похож. В любом случае переделка HLSL-GLSL без учета этого не сложная. Насчет
asm шейдеров вроде это постепенно уходит в прошлое...
а так думай сам.
Visual С++ vs. Delphi | 7 июня 2006 | 11:23 | #2495 |
---|
Sniper
>вот скажи, ты пользуешься Thebat, TotalCommander, DownloadMaster, SpeedFan? Да?
>Немедленно выкини их со своего компа! Они на Дельфи написаны!!!!!
не ипользую ничего!!! Far вместо Total Commander
>так же низачто не используй DevC++ он тоже написан на Delphi %)
меня устраивает MSVC
slyfox
>TotalCommander: Брр... как этот бред вообще пользовать можно, конечно FAR!
полностью поддерживаю тем более новый Far написан на Visual C++(старый на убогом Borland компиляторе) что улучшит его работу.
>вот скажи, ты пользуешься Thebat, TotalCommander, DownloadMaster, SpeedFan? Да?
>Немедленно выкини их со своего компа! Они на Дельфи написаны!!!!!
не ипользую ничего!!! Far вместо Total Commander
>так же низачто не используй DevC++ он тоже написан на Delphi %)
меня устраивает MSVC
slyfox
>TotalCommander: Брр... как этот бред вообще пользовать можно, конечно FAR!
полностью поддерживаю тем более новый Far написан на Visual C++(старый на убогом Borland компиляторе) что улучшит его работу.
Visual С++ vs. Delphi | 6 июня 2006 | 18:34 | #2478 |
---|
pool2004
>Я утверждал (процитирую самого себя), что "в большинстве случаев можно обойтись без объектов и без ссылок. В Делфи или Фрипаскале, разумеется. А в С/С++ - >нельзя."
смешно...
почитал бы ты книжечки и попрограммировал что нибудь по сложнее, а потом рассуждал что можно сделать и какими средствами и на каком языке это будет лучше.
crazz
>Приведи пример реального проекта на Дельфи без использования объектов, указателей и ссылок.
Калькулятор :))))))))))))
>Я утверждал (процитирую самого себя), что "в большинстве случаев можно обойтись без объектов и без ссылок. В Делфи или Фрипаскале, разумеется. А в С/С++ - >нельзя."
смешно...
почитал бы ты книжечки и попрограммировал что нибудь по сложнее, а потом рассуждал что можно сделать и какими средствами и на каком языке это будет лучше.
crazz
>Приведи пример реального проекта на Дельфи без использования объектов, указателей и ссылок.
Калькулятор :))))))))))))
Из Дельфи в Си? И из Си в Дельфи? | 6 июня 2006 | 18:31 | #134 |
---|
А я вот на убожестве Delphi прогал несколько лет назад потому что в пещерной деревне находился. А теперь никогда не буду отстой этот применять...
Из Дельфи в Си? И из Си в Дельфи? | 6 июня 2006 | 10:05 | #124 |
---|
XProger
я в этом жутко сомневаюсь, иначе бы ты использовал C++ а не убожество :)
я в этом жутко сомневаюсь, иначе бы ты использовал C++ а не убожество :)
Из Дельфи в Си? И из Си в Дельфи? | 5 июня 2006 | 19:02 | #101 |
---|
slyfox
>Да, С, в наши дни, - левый язык.
интересно, а можно поподробней?
>Да, С, в наши дни, - левый язык.
интересно, а можно поподробней?
Rational Rose 2003 | 5 июня 2006 | 18:59 | #9 |
---|
nstd
Ну и как вообще эта версия по сравнению с предыдущими?
Ну и как вообще эта версия по сравнению с предыдущими?
Проблема с распознаванием макс. версии шейдеров. | 5 июня 2006 | 14:21 | #2 |
---|
Striker_Dev.
вот самый просто йспособ через стандартный макрос:
вот самый просто йспособ через стандартный макрос:
switch (caps.PixelShaderVersion) { case D3DPS_VERSION(1, 0): // 1.0 break; case D3DPS_VERSION(1, 1): // 1.1 break; case D3DPS_VERSION(1, 2): // 1.2 break; case D3DPS_VERSION(1, 3): // 1.3 break; case D3DPS_VERSION(1, 4): // 1.4 break; case D3DPS_VERSION(2, 0): // 2.0 break; case D3DPS_VERSION(3, 0): // 3.0 break; } switch (caps.VertexShaderVersion) { case D3DVS_VERSION(1, 1): // 1.1 break; case D3DVS_VERSION(2, 0): // 2.0 break; case D3DVS_VERSION(3, 0): // 3.0 break; }
Нужны ли шейдоры в shareware? | 5 июня 2006 | 14:13 | #20 |
---|
Alex_ch
>Просто проверки капсов недостаточно, нужно пробовать создать шейдеры (сталкивался с таким на GF2MX при использовании VS). Если это не получилось создать >какой-то шейдер то использовать более простой рендер для данного эффекта (или чего там) либо не использовать шейдера. try... catch(...) - это для клинического >случая, описанного mudart'ом . Желательно сделать тестовый рендер с использованием всех фич которые удалось задетектить, только без вывода во front буфер.
неплохо, интересно а так делается в профессиоанльных игровых проектах?
>Это наверное самый клинический пример OGL: на моей очень старой карточке CULL_FACE неправильно работал :) Вообще примеров много, если покопаться. То это >не работает там то и там то, то не так работает... Да тот же зеленый цвет в Doom 3 на некоторых картах.
ну насчет цветов разве в Direct3D такого не бывает?
>Просто проверки капсов недостаточно, нужно пробовать создать шейдеры (сталкивался с таким на GF2MX при использовании VS). Если это не получилось создать >какой-то шейдер то использовать более простой рендер для данного эффекта (или чего там) либо не использовать шейдера. try... catch(...) - это для клинического >случая, описанного mudart'ом . Желательно сделать тестовый рендер с использованием всех фич которые удалось задетектить, только без вывода во front буфер.
неплохо, интересно а так делается в профессиоанльных игровых проектах?
>Это наверное самый клинический пример OGL: на моей очень старой карточке CULL_FACE неправильно работал :) Вообще примеров много, если покопаться. То это >не работает там то и там то, то не так работает... Да тот же зеленый цвет в Doom 3 на некоторых картах.
ну насчет цветов разве в Direct3D такого не бывает?
Нужны ли шейдоры в shareware? | 5 июня 2006 | 13:44 | #18 |
---|
Alex_ch
>Если "что-то" тебе сообщает о том, что те же шейдеры присутствуют, то неплохо бы проверить а создаются ли они, а потом проверить в try catch а можно ли их >использовать
а можно поподробней? т.е. это как пробуем использовать заключив в try... catch(...) ? а разве проверка то что в D3DCAPS9 не достаточна чтобы вообще не пробовать их создавать?
>у а если ты используешь OGL, то ты сам себе злобный буратин, т.к. там постоянно встречается несоответствие спецификации в отличие от DX.
можно пример?
>Если "что-то" тебе сообщает о том, что те же шейдеры присутствуют, то неплохо бы проверить а создаются ли они, а потом проверить в try catch а можно ли их >использовать
а можно поподробней? т.е. это как пробуем использовать заключив в try... catch(...) ? а разве проверка то что в D3DCAPS9 не достаточна чтобы вообще не пробовать их создавать?
>у а если ты используешь OGL, то ты сам себе злобный буратин, т.к. там постоянно встречается несоответствие спецификации в отличие от DX.
можно пример?