Jump to content

  • Log In with Google      Sign In   
  • Create Account

working out the center of the screen


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
10 replies to this topic

#1 Anddos   Members   -  Reputation: 501

Like
0Likes
Like

Posted 07 November 2013 - 10:00 PM

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

Attached Thumbnails

  • button.jpg

Edited by Anddos, 07 November 2013 - 11:55 PM.

:)

Sponsor:

#2 JacobM   Members   -  Reputation: 160

Like
1Likes
Like

Posted 08 November 2013 - 06:49 PM

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



#3 Anddos   Members   -  Reputation: 501

Like
0Likes
Like

Posted 08 November 2013 - 07:40 PM

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?


:)

#4 JacobM   Members   -  Reputation: 160

Like
0Likes
Like

Posted 08 November 2013 - 07:45 PM

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.



#5 Anddos   Members   -  Reputation: 501

Like
0Likes
Like

Posted 08 November 2013 - 07:50 PM

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.


:)

#6 JacobM   Members   -  Reputation: 160

Like
0Likes
Like

Posted 08 November 2013 - 08:00 PM

You're honestly better off learning DX11...theres no reason to learn something which will soon be discontinued. DX includes functions for detecting mouse and keyboard input. 

You should have a look at these:

 

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



#7 Anddos   Members   -  Reputation: 501

Like
0Likes
Like

Posted 08 November 2013 - 08:13 PM

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, 08 November 2013 - 09:54 PM.

:)

#8 Anddos   Members   -  Reputation: 501

Like
0Likes
Like

Posted 08 November 2013 - 09:05 PM

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

Attached Thumbnails

  • centertri.jpg

Edited by Anddos, 08 November 2013 - 09:57 PM.

:)

#9 JacobM   Members   -  Reputation: 160

Like
1Likes
Like

Posted 08 November 2013 - 11:08 PM

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



#10 Anddos   Members   -  Reputation: 501

Like
0Likes
Like

Posted 09 November 2013 - 12:50 AM

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, 09 November 2013 - 01:01 AM.

:)

#11 JacobM   Members   -  Reputation: 160

Like
0Likes
Like

Posted 09 November 2013 - 02:28 AM

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.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS