• Advertisement
Sign in to follow this  

working out the center of the screen

This topic is 1534 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

 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
Advertisement

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

Thanks for the reply, do you have to use picking to press buttons?, would i not be able to use mouse cords instead of rays?

Share this post


Link to post
Share on other sites

yes if you're rending in 2D.

 

x,y being the top left corner of your button:

 

you would check if the mouse position is greater then x,y but less then x+width, y+height.

Share this post


Link to post
Share on other sites

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

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

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
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

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

I was just giving you an example. you will have to plug them in on your own using the variable names you declared in CUSTOMVERTEX.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement