开发者

OpenGL: 2D Vertex coordinates to 2D viewing coordinates?

I'm implementing a rasterizer for a class project, and currently im stuck on what method/how i should convert vertex coordinates to viewing pane coordinates.

I'm given a list of verticies of 2d coordinates for a triangle, like

 0 0 1  
 2 0 1  
 0 1 1

and im drawing in a viewing pane (using OpenGL and GLUT) of size 400X400 pixels, for example.

My question is how do i decide where in the viewing pane to put these verticies, assuming

1) I want the coordinate's to be centered around 0,0 at the center of the screen

2) I want to fill up most of the screen (lets say for this example, the screen is the maximum x coordinate + 1 lengths wid开发者_运维百科e, etc)

3) I have any and all of OpenGL's and GLUT's standard library functions at my disposal.

Thanks!


http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml

To center around 0 use symmetric left/right and bottom/top. Beware the near/far which are somewhat arbitrary but are often chosen (in examples) as -1..+1 which might be a problem for your triangles at z=1.

If you care about the aspect ratio make sure that right-left and bottom-top are proportional to the window's width/height.


You should consider the frustum which is your volumetric view and calculate the coordinates by transforming the your objects to consider their position, this explains the theory quite thoroughly..

basically you have to project the object using a specified projection matrix that is calculated basing on the characteristics of your view:

  • scale them according to a z (depth) value: you scale both y and x in so inversely proportionally to z
  • you scale and shift coordinates in order to fit the width of your view
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜