Рисование прямоугольника в Direct X

Используя этот учебник, мне удалось поднять красный треугольник на моем экране: http://www.directxtutorial.com/Lesson.aspx?lessonid=9-4-4

CUSTOMVERTEX OurVertices[] =
{
{ 0, 0, 0, 1.0f, D3DCOLOR_XRGB( 127, 0, 0 ) },
{ WIDTH, 0, 0, 1.0f, D3DCOLOR_XRGB( 127, 0, 0 ) },
{ 0, 300, 0, 1.0f, D3DCOLOR_XRGB( 127, 0, 0 ) },
{ WIDTH, 300, 0, 1.0f, D3DCOLOR_XRGB( 127, 0, 0 ) }
};

d3dDevice->CreateVertexBuffer(3*sizeof(CUSTOMVERTEX),
0,
CUSTOMFVF,
D3DPOOL_MANAGED,
&vBuffer,
NULL);

VOID* pVoid;    // the void* we were talking about

vBuffer->Lock(0, 0, (void**)&pVoid, 0);    // locks v_buffer, the buffer we made earlier
memcpy(pVoid, OurVertices, sizeof(OurVertices));    // copy vertices to the vertex buffer
vBuffer->Unlock();    // unlock v_buffer

d3dDevice->SetFVF(CUSTOMFVF);
d3dDevice->SetStreamSource(0, vBuffer, 0, sizeof(CUSTOMVERTEX));
d3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);

Но вы можете видеть, что я действительно хочу рисовать прямоугольник.

Я изменил Примитив, чтобы рисовать 2 треугольника, и увеличил размер буфера до 4 * размера моей пользовательской вершины, но я не могу сказать, что понимаю, как передать его из моего треугольника в мой прямоугольник, мне бы хотелось:

введите описание изображения здесь

Есть ли лучший способ рисования прямоугольника, а не с использованием четырехугольника, учитывая, что я просто хочу перекинуть какой-нибудь текст поверх этого примерно так:

http://1.bp.blogspot.com/-6HjFVnrVM94/TgRq8oP4U-I/AAAAAAAAAKk/i8N0OZU999E/s1600/monkey_island_screen.jpg

5

Решение

Мне пришлось расширить свой буфер, чтобы учесть размер массива 4 вершин:

d3dDevice->CreateVertexBuffer(4*sizeof(CUSTOMVERTEX),
0,
CUSTOMFVF,
D3DPOOL_MANAGED,
&vBuffer,
NULL);

А затем изменил примитив отрисовки с TRIANGLELIST на STRIP, увеличив количество нарисованных треугольников до 2

d3dDevice->DrawPrimitive (D3DPT_TRIANGLESTRIP, 0, 2 );

Источник: http://www.mdxinfo.com/tutorials/tutorial4.php

9

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]