Sign in to follow this  
Anddos

working out the center of the screen

Recommended Posts

Anddos    588

 how do i work out the center of the screen so i can space those cordinates for the vertexbuffer,etc these values so this button will be center of the screen and how would i give some control to this button such as mouse clicking on it,thanks if you can help...

 

the below code is for directx 9

// create the vertices using the CUSTOMVERTEX struct
CUSTOMVERTEX vertices[] =
{
//Triangle 1
{ 150.0f, 400.5f, -5.5f, //xyz screenspace
0, 1, //textures coords
1.0f }, //rhw
// D3DCOLOR_XRGB(0, 0, 255), }, //diffuse blue
 
{ 325.0f, 500.0f, -5.5f, //xyz screenspace
1, 1, //textures coords
1.0f }, //rhw
//D3DCOLOR_XRGB(0, 255, 0), }, //diffuse green
 
{ 150.0f, 500.0f, -5.5f, //xyz screenspace
1, 0, //textures coords
1.0f }, //rhw
//D3DCOLOR_XRGB(255, 0, 0), }, //diffuse red
 
 
//Triangle 2
{ 325.0f, 500.0f, -5.5f, //xyz screenspace
1, 0, //textures coords
1.0f }, //rhw
//D3DCOLOR_XRGB(0, 255, 0), }, //diffuse green
 
{ 150.0f, 400.5f, -5.5f, //xyz screenspace
0, 0, //textures coords
1.0f }, //rhw
//D3DCOLOR_XRGB(0, 0, 255), }, //diffuse blue
 
{ 325.0f, 400.5f, -5.5f, //xyz screenspace
0, 1, //textures coords
1.0f }, //rhw
//D3DCOLOR_XRGB(255, 0, 0), }, //diffuse red
};

Edited by Anddos

Share this post


Link to post
Share on other sites
Jacob Mnasin    160

The screen center is screenWidth/2, screenHeight/2. 

If you want to place the object completely centered, you would have to use the following formula:

 

x and y being the top left corner of object and rectangleWidth and rectangleHeight being the width and height of the rectangle you are rendering.

x = screenWidth/2 - rectangleWidth/2;

y = screenHeight/2 - rectangleHeight/2;

 

Picking is a bit different and required that you first implement at least a basic collision detection. for a few examples see:

 

Program Files/Microsoft DirectX SDK (June 2010)\Samples\C++\Misc\Collision

 

http://www.braynzarsoft.net/index.php?p=D3D11PICKING

 

http://www.rastertek.com/dx11tut47.html

Share this post


Link to post
Share on other sites
Anddos    588

great,i think i have the idea now,theres going to be a global bool with mousepress correct if i am using windows messages,else how else will the rest of the code know i am pressing the mouse button.

Share this post


Link to post
Share on other sites
Anddos    588

DirectX 11 is way to complicated for me ive already tried,I think directx 9 is still worth learning before 10,11 even tho it has the same drawing polygon concepts,thanks for your suggestion...

Edited by Anddos

Share this post


Link to post
Share on other sites
Anddos    588

this is what i have, i am stuck on the last point

 

//Triangle 1
{ 800 / 2 - triangle.right/2, //x
600 / 2 - triangle.bottom/2,  //y
-5.5f, //z screenspace
//0, 1, //textures coords
1.0f }, //rhw
// D3DCOLOR_XRGB(0, 0, 255), }, //diffuse blue
 
{ 800 / 2 + triangle.right/2, //x
600 / 2 - triangle.bottom / 2,  //y
-5.5f, //z screenspace
//1, 1, //textures coords
1.0f }, //rhw
//D3DCOLOR_XRGB(0, 255, 0), }, //diffuse green
 
{ 800 / 2 - triangle.right/2, -5.5f, //xyz screenspace
600 / 2 + triangle.bottom / 2,  //y
//1, 0, //textures coords
1.0f }, //rhw
//D3DCOLOR_XRGB(255, 0, 0), }, //diffuse red
 
i am sure this is right, but i cannot see the last point??
Edited by Anddos

Share this post


Link to post
Share on other sites
Jacob Mnasin    160
int width = 200;
int height = 150;

position.x = screenWidth/2 - width/2;
position.y = screenHeight/2 - height/2;

// create the vertices using the CUSTOMVERTEX struct
CUSTOMVERTEX vertices[] =
{
//Triangle 1

vertices[0].position = (position.x, position.y, -1.0f);  // Top left.
vertices[0].uv = (0.0f, 0.0f);

vertices[1].position = (position.x + width, position.y - height, -1.0f);  // Bottom right.
vertices[1].uv = (1.0f, 1.0f);

vertices[2].position = (position.x, position.y - height, -1.0f);  // Bottom left.
vertices[2].uv = (0.0f, 1.0f);

// Second triangle.
vertices[3].position = (position.x, position.y, -1.0f);  // Top left.
vertices[3].uv = (0.0f, 0.0f);

vertices[4].position = (position.x + width, position.y, -1.0f);  // Top right.
vertices[4].uv = (1.0f, 0.0f);

vertices[5].position = (positon.x + width, position.y - height, -1.0f);  // Bottom right.
vertices[5].uv = (1.0f, 1.0f);

Share this post


Link to post
Share on other sites
Anddos    588

shouldnt there be a vertices[0].rhw, and then ignore the 3rd param has the z value is not needed if .position is a D3DXVECTOR3?

Edited by Anddos

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this