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

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

Из Дельфи в Си? И из Си в Дельфи?7 июня 200618:01#157
XProger
>А что эта мурня делает? Её даже читать противно, не говоря уже о ясности и прозрачности кода ;)
вам Delphi'стам не понять силу шаблонов. Вроде умный малый, а пишешь по ламерски по поводу прозрачности и ясночти кода понимания которого зависит от уровня программиста и языка ;).
Visual С++ vs. Delphi7 июня 200616:48#2499
enki
>А чего есть новый фар?
http://www.farmanager.com/news.php?l=ru
Помогите с переходом D3D -> OGL7 июня 200613:55#9
Костян
>Насколько я понял, это тоже самое что и glBegin()/glEnd() + glColor() + glTexCoord + glVertex(),
мне кажеться это будет быстрее при больших объемах данных. Явно ты в Direct3D используешь IDirect3DVertexBuffer9/IDirect3DIndexBuffer9 тогда надо в OpenGL использоать расширение ARB_vertex_buffer_object.
>но передаваемые вершины всё-равно проходят этап трансформации, т.е. значение видовой, проекционной и мировой матриц влияет на то как данные вершины будут >выглядеть на экране?
мне кажеться все будет работать как в Direct3D ты попробуй.
Помогите с переходом D3D -> OGL7 июня 200613:40#7
Что-то типа такого.
struct QuadVertex {
  float    x,y,z,w;
  unsigned long clr;
  float    tu,tv;
};
...
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glTexCoordPointer(2, GL_FLOAT, sizeof(QuadVertex), reinterpret_cast<const char *>(vtxes) + sizeof(QuadVertex) - 2 * sizeof(float));
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(QuadVertex), reinterpret_cast<const char *>(vtxes) + 4 * sizeof(float));
glVertexPointer(2, GL_FLOAT, sizeof(QuadVertex), vtxes);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 6);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);

Код длинный если бы вершина была из 3 координат то
все сводилось бы к (просто нет такой комбинации параметров вершины цвет + текстурные координаты + вершина(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 -> OGL7 июня 200612:41#5
Костян
>Как их использовать, трансформированные вершины,
вроде так-же как и в D3D,  но я это не делал(могу ошибаться).
а более подробно через матрицу вида вызывая glRotatef,glTranslatef, glScalef. перед этим нужно сохранить текущую матрицу, после трансформаций востановить.
для этого используются функции glPushMatrix/glPopMatrix не забывая выбрать текущую матрицу через glMatrixMode
иными словами в Direct3D ты работаешь с мироваой матрицей через GetTrasform/SetTransform попутно сохраня в OpenGL
итак вот пример на OpenGL
glMatrixMode(GL_VIEW); //выбираем видовую матрицу
glPushMatrix();// сохраняем ее
glTranslatef(1,2,3); // трансформация
DrawObject();  // отображения объекта
glPopMatrix(); // восстановление
аналогично чтобы было понятно на Direct3D
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 -> OGL7 июня 200612: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 шейдеров вроде это постепенно уходит в прошлое...
а так думай сам.
Visual С++ vs. Delphi7 июня 200611:23#2495
Sniper
>вот скажи, ты пользуешься Thebat, TotalCommander, DownloadMaster, SpeedFan? Да?
>Немедленно выкини их со своего компа! Они на Дельфи написаны!!!!!
не ипользую ничего!!! Far вместо Total Commander
>так же низачто не используй DevC++ он тоже написан на Delphi %)
меня устраивает MSVC
slyfox
>TotalCommander: Брр... как этот бред вообще пользовать можно, конечно FAR!
полностью поддерживаю тем более новый Far написан на Visual C++(старый на убогом Borland компиляторе) что улучшит его работу.
Visual С++ vs. Delphi6 июня 200618:34#2478
pool2004
>Я утверждал (процитирую самого себя), что "в большинстве случаев можно обойтись без объектов и без ссылок. В Делфи или Фрипаскале, разумеется. А в С/С++ - >нельзя."
смешно...
почитал бы ты книжечки и попрограммировал что нибудь по сложнее, а потом рассуждал что можно сделать и какими средствами и на каком языке это будет лучше.
crazz
>Приведи пример реального проекта на Дельфи без использования объектов, указателей и ссылок.
Калькулятор :))))))))))))
Из Дельфи в Си? И из Си в Дельфи?6 июня 200618:31#134
А я вот на убожестве Delphi  прогал несколько лет назад потому что в пещерной деревне находился. А теперь никогда не буду отстой этот применять...
Из Дельфи в Си? И из Си в Дельфи?6 июня 200610:05#124
XProger
я в этом жутко сомневаюсь, иначе бы ты использовал C++ а не убожество :)
Из Дельфи в Си? И из Си в Дельфи?5 июня 200619:02#101
slyfox
>Да, С, в наши дни, - левый язык.
интересно, а можно поподробней?
Rational Rose 20035 июня 200618:59#9
nstd
Ну  и как вообще эта версия по сравнению с предыдущими?
Проблема с распознаванием макс. версии шейдеров.5 июня 200614: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 июня 200614:13#20
Alex_ch
>Просто проверки капсов недостаточно, нужно пробовать создать шейдеры (сталкивался с таким на GF2MX при использовании VS). Если это не получилось создать >какой-то шейдер то использовать более простой рендер для данного эффекта (или чего там) либо не использовать шейдера. try... catch(...) - это для клинического >случая, описанного mudart'ом . Желательно сделать тестовый рендер с использованием всех фич которые удалось задетектить, только без вывода во front буфер.
неплохо, интересно а так делается в профессиоанльных игровых проектах?
>Это наверное самый клинический пример OGL: на моей очень старой карточке CULL_FACE неправильно работал :) Вообще примеров много, если покопаться. То это >не работает там то и там то, то не так работает... Да тот же зеленый цвет в Doom 3 на некоторых картах.
ну насчет цветов разве в Direct3D такого не бывает?
Нужны ли шейдоры в shareware?5 июня 200613:44#18
Alex_ch
>Если "что-то" тебе сообщает о том, что те же шейдеры присутствуют, то неплохо бы проверить а создаются ли они, а потом проверить в try catch а можно ли их >использовать
а можно поподробней? т.е. это как пробуем использовать заключив в try... catch(...) ? а разве проверка то что в D3DCAPS9 не достаточна чтобы вообще не пробовать их создавать?
>у а если ты используешь OGL, то ты сам себе злобный буратин, т.к. там постоянно встречается несоответствие спецификации в отличие от DX.
можно пример?

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

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