forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   DirectX и C++ (http://forum.boolean.name/showthread.php?t=14481)

616}[aKeP 27.07.2011 15:18

Ответ: DirectX и C++
 
Переопределил DWORD_PTR все скомпилировалось. Вопрос, а почему в dsound этот тип не переопределен или какой хедер мне поключить, чтоб не надо было самому переопределять?

616}[aKeP 06.08.2011 17:25

Ответ: DirectX и C++
 
Люди, а как сделать, что бы 3д объект был сглаженым, как стандартная сфера? Ведь она не такая гладкая и ровная. Я создал поверхность 20 на 20 точек и мне нужно, что бы поверхность была сглаженой.

616}[aKeP 07.08.2011 19:40

Ответ: DirectX и C++
 
Все, ура!! Разобралься сам. Весь инет облазил. Оказывается, чтобы добиться эффекта сглажености, надо нормали высчитывать, как среднее арефметическое от нормалей смежных поверхностей.

616}[aKeP 13.08.2011 16:01

Ответ: DirectX и C++
 
А вот и я, опять с проблемой, а точнее с вопросом и не с одним, а с несколькими.
1)Я хочу использовать прозрачность, включаю альфа смешивание, а оно происходит без учета z буфера. Тоесть за прозрачной сферой отрисовываютяся только те объекты, которые были уже отрисованы до сферы. Вопрос, как сделать если это возможно, чтобы буффер глубины учитывался при смешивании?

2)Кто-нибудь знает, где можно найти статьи по кубическим отражения и использовании IDirect3DCubeTexture, для реализации зеркала например?

3)И третий вопрось, можно ли сделать bump эффект не используя шэйдеры и если да то как?

Mr_F_ 13.08.2011 16:27

Ответ: DirectX и C++
 
Цитата:

Вопрос, как сделать если это возможно, чтобы буффер глубины учитывался при смешивании?
альфа объекты надо рисовать, когда уже были отрисованы те, что сзади них.
Цитата:

2)Кто-нибудь знает, где можно найти статьи по кубическим отражения и использовании IDirect3DCubeTexture, для реализации зеркала например?
можешь хоть на блице посмотреть примеры использования кубмапов. работа конкретно с IDirect3DCubeTexture тривиальна, можешь глянуть хелп сдк.
Цитата:

3)И третий вопрось, можно ли сделать bump эффект не используя шэйдеры и если да то как?
лучше сказать, что нельзя, т.к. безшейдерные бампы выглядит убого.

HolyDel 13.08.2011 16:50

Ответ: DirectX и C++
 
1)
Цитата:

device->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
device->SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
device->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
для сферы. и полупрозрачные объекты надо рисовать после непрозрачных в порядке от дальних к ближним.

2)
Код:


LPDIRECT3DCUBETEXTURE9 CubeMap;

m_d3dDevice->CreateCubeTexture(8192, 1, D3DUSAGE_RENDERTARGET, D3DFMT_R8G8B8,        D3DPOOL_DEFAULT, &CubeMap);

....
...
CubeMap->GetCubeMapSurface(D3DCUBEMAP_FACE_POSITIVE_X, 0, &pRenderSurface);
device->SetRenderTarget(0,pRenderSurface);

  device->Clear(0,
                          NULL,
                          D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
                          D3DCOLOR_XRGB(0,0,0),
                          1.0f,
                          0);
  device->BeginScene();

и так 6 раз.
меняешь взгляд камеры и D3DCUBEMAP_FACE_POSITIVE_X

3)да.
Код:

device->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3 );
device->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
device->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_NORMCUBEMAP );

и можешь третьим слоем еще наложить диффузмапу.

616}[aKeP 13.08.2011 17:23

Ответ: DirectX и C++
 
Спасибо большое!
Я знаю как писать в кубическую текстуру. Но как накладывать, как обычную текстуру или есть различия?

И еще, как сделать несколько проходов для одного уровня тукстур:

device->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3 );
device->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
device->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_NORMCUBEMAP );


device->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE);
device->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_DIFFUSE);
device->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_TETXURE);


Я правильно понимаю?

FireOwl 13.05.2012 05:46

Ответ: DirectX и C++
 
Что означает вот такое сообщение:
"Указанной команде требуется псевдоним либо имя файла, драйвера или устройства. Задайте его."
(Английский вариант звучит, насколько я понял, так:
"The specified command requires an alias, file, driver, or device name. Please supply one.")

Возникает оно при попытке вызова
mciExecute('play C:\\Windows\\Media\\flourish.mid')
из winmm.dll

Процесс гугления результатов не принес.

Mr_F_ 13.05.2012 12:34

Ответ: DirectX и C++
 
Цитата:

mciExecute('play C:\\Windows\\Media\\flourish.mid')
как это связано с DX? o_0 где ты это вообще обнаружил?
и с чего это тут кавычки не двойные?

FireOwl 13.05.2012 14:20

Ответ: DirectX и C++
 
Да, с DirectX не связано. Прошу скинуть в отдельную тему, если возможно.

Обнаружил при попытке проиграть MIDI не заморачиваясь с дополнительными библиотеками, средствами самого Windows.
Кавычки одиночные потому что Python (можно и двойные, разницы нет). Но темы по Python нет, а вызов системных dll в C++ также примерно происходит.

Полный код был такой:
PHP код:

import ctypestime
ctypes
.windll.winmm.mciExecute('play C:\\Windows\\Media\\flourish.mid')
time.sleep(10)
ctypes.windll.winmm.mciExecute('close C:\\Windows\\Media\\flourish.mid'



Часовой пояс GMT +4, время: 19:30.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot