Skip to main content
GameDev.net gamedev.net
🔒 Locked

vertice array

Started by Dannyli May 20, 2013 at 11:17 PM 5 replies 1.6k views
Original Post
Dannyli
Dannyli

CUSTOMVERTEX vertices[] =
    {
		{ 100.0f, 400.0f, 0.5f, 1.0f, 0xffff0000, },
        { 300.0f,  50.0f, 0.5f, 1.0f, 0xff00ff00, }, 
        { 500.0f, 400.0f, 0.5f, 1.0f, 0xff0000ff, },
    };

what means " 0xffff0000?" ? I know 100.0f, 400.0f, 0.5f, 1.0f, means the point

21st Century Moose
21st Century Moose

It's the colour expressed as a 32-bit hexadecimal unsigned int; you can derive these values yourself using the D3DCOLOR_ARGB macro.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls. 
menohack
menohack

You can lay out your CUSTOMVERTEX however you want but I am assuming that the first 4 floats correspond to the position as a float4(x,y,z,w) and the last integer is a vertex color 0xRRGGBBAA for red, green, blue and transparency. In the first one it is probably the color teal.

Your input layout determines all of these (D3D11_INPUT_ELEMENT_DESC).

Dannyli
Dannyli

So this sample draw a triangle with three color points, or a blending color triangle?


HRESULT InitVB()
{
	//user's data of the points
    CUSTOMVERTEX vertices[] =
    {
		{ 100.0f, 400.0f, 0.5f, 1.0f, 0xffff0000, },
        { 300.0f,  50.0f, 0.5f, 1.0f, 0xff00ff00, }, 
        { 500.0f, 400.0f, 0.5f, 1.0f, 0xff0000ff, },
    };

	//creat the point buffer area
    if( FAILED( g_pd3dDevice->CreateVertexBuffer( 3*sizeof(CUSTOMVERTEX),
                                                  0, D3DFVF_CUSTOMVERTEX,
                                                  D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
    {
        return E_FAIL;
    }

	//blend
    VOID* pVertices;
    if( FAILED( g_pVB->Lock( 0, sizeof(vertices), (void**)&pVertices, 0 ) ) )
        return E_FAIL;
    memcpy( pVertices, vertices, sizeof(vertices) );
    g_pVB->Unlock();

    return S_OK;
}
21st Century Moose
21st Century Moose

No, that sample draws nothing. What that sample does is create a vertex buffer and fill it with the data you supply. It's probably copy and pasted from a tutorial that uses SetFVF with D3DFVF_XYZRHW | D3DFVF_DIFFUSE. Since it's using SetFVF the actual blending mode (or lack thereof) will depend on the SetTextureStageState calls elsewhere in the tutorial.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls. 
L. Spiro
L. Spiro

menohack, on 21 May 2013 - 08:13, said:
the last integer is a vertex color 0xRRGGBBAA for red, green, blue and transparency. In the first one it is probably the color teal.

The format is 0xAARRGGBB, so the first color is red. Always use the D3DCOLOR_ARGB() macro when composing colors.


L. Spiro
I restore Nintendo 64 video-game OST’s into HD! https://www.youtube.com/channel/UCCtX_wedtZ5BoyQBXEhnVZw/playlists?view=1&sort=lad&flow=grid
Dannyli
Dannyli

Thanks for help, I've figured them out.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.