C ++ Direct3D 10, D3DX10Device-> DrawText () Удаляет мой мирC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C ++ Direct3D 10, D3DX10Device-> DrawText () Удаляет мой мир

Сообщение Anonymous »

У меня есть 3D -пирамида, сделанная из блоков, которую игрок может управлять, я думал о отображении текста, чтобы я знаю, как для будущих проектов, но когда я визуал текст, моя пирамида исчезает, оставляя только текст. Я следую учебному пособию, сделанную Bryanzersoft здесь ссылкой на учебник
, и он говорит, чтобы очистить штаты со следующим кодом < /p>

Код: Выделить всё

    d3dDevice->OMSetDepthStencilState(0, 0);
d3dDevice->IASetInputLayout( VertexLayout );
d3dDevice->IASetPrimitiveTopology( D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
< /code>
и сбросить геометрический шейдер с помощью этого кода в вершинном шейдере < /p>
technique10 Tech
{
pass P0
{
SetVertexShader( CompileShader( vs_4_0, VS() ) );
SetGeometryShader( NULL );
SetPixelShader( CompileShader( ps_4_0, PS() ) );
}
}
< /code>
Значение является нулевым, потому что геометрия не было установлено.void DrawScene()
{

float bgColor[4] = { 0.54, 0.8, 1, 1.0f };
d3dDevice->ClearRenderTargetView(RenderTargetView, bgColor);
d3dDevice->ClearDepthStencilView(DepthStencilView, D3D10_CLEAR_DEPTH | D3D10_CLEAR_STENCIL, 1.0f, 0);

//set view
D3DXMatrixOrthoLH(&Projection, (Width / 30) * zoom,(Height / 30)* zoom, 1.0f, 1000.0f);

//reset states
d3dDevice->OMSetDepthStencilState(0, 0);
d3dDevice->IASetInputLayout(VertexLayout);
d3dDevice->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST);

//fix rotation value
if (rot > (float)6.283185)
rot -= (float)6.283185;
else if (rot < 0)
rot = (float)6.283185 + rot;

//lighting junk
fxLightVar->SetRawValue(&light, 0, sizeof(Light));
D3D10_TECHNIQUE_DESC techDesc;
Technique->GetDesc(&techDesc);

//pyramid

for (int h = 9; h > 0; h -= 2) {

for (int y = 0; y < h; y++) {
int half = ceil(h / 2);
if (y < half) {
for (int x = 0; x < y + 1; x++) {
drawGridCube(x * 2 - y, (9 - h) / 2, half - y, grassMapResourceView,techDesc);
}
}
else {
for (int x = 0; x < h - y; x++) {
drawGridCube(x * 2 - ((h - 1) - y), (9 - h) / 2, half - y, grassMapResourceView,techDesc);
}
}
}

}

//set resource to diffuse map
fxDiffuseMapVar->SetResource(DiffuseMapResourceView);

//render text
D3DXCOLOR fontColor(1.0f, 1.0f, 1.0f, 1.0f);
RECT rectangle = { 10, 10, 0, 0 };
Font->DrawText(0, L"Finally, it works!", -1, &rectangle, DT_NOCLIP, fontColor);

}

//a shortcut to drawing blocks
void drawGridCube(int x, int y, int z, ID3D10ShaderResourceView* tex, D3D10_TECHNIQUE_DESC techDesc) {

D3DXVECTOR3 rotaxis(0.0f, 1.0f, 0.0f);
D3DXVECTOR3 rotaxisX(1.0f, 0.0f, 0.0f);

D3DXMatrixTranslation(&Translation, x * 2, y * 2, z * 2);
D3DXMatrixRotationAxis(&Rotation, &rotaxis, rot);
D3DXMatrixRotationAxis(&Rotationx, &rotaxisX, rotx);
D3DXMatrixScaling(&Scale, 1.0f, 1.0f, 1.0f);

Transformations = Translation * Rotation * Rotationx * Scale;
WVP = World * Transformations * View * Projection;
fxWVPVar->SetMatrix((float*)&WVP);

fxDiffuseMapVar->SetResource(tex);

for (UINT p = 0; p < techDesc.Passes; ++p) { //drawing a new cube, but with a different scale and rotation

Technique->GetPassByIndex(p)->Apply(0);
d3dDevice->DrawIndexed(36, 0, 0);
}

return;
}
< /code>
vertex.fx
technique10 Tech
{
pass P0
{
SetVertexShader(CompileShader(vs_4_0, VS()));
SetGeometryShader(NULL);
SetPixelShader(CompileShader(ps_4_0, PS()));

}
}
Я полная нулю и вряд ли что -то понимаю, но
Я попытался искать свою проблему в Интернете, сбросить топологию и чаще и утверждает и изменяет порядок текста и сцены, но только текст будет отображаться.

Подробнее здесь: https://stackoverflow.com/questions/795 ... s-my-world
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»