On 22/01/11 23:10, Ian Mallett wrote:
On Sat, Jan 22, 2011 at 3:48 PM, Sam Bull <sam.hack...@sent.com <mailto:sam.hack...@sent.com>> wrote:

    I only know a tiny bit of OpenGL, and I was wondering if anybody who
    knows some OpenGL programming could answer a question, to help me
    prepare.
           In order for me to produce these widgets in OpenGL, does
    OpenGL provide
    functions to draw 2D shapes onto the screen in front of the 3D view
    (like a HUD), or do these have to be drawn in 3D and anchored to the
    camera or something?.

    Thanks,
    Sam Bull

Graphics hardware works by transforming points (vertices) by three matrices (model, view, projection, although OpenGL combines the model and view matrices). Then, the points are connected by pixels (rasterization). So yes, change the matrices, and you change how what you see works.


To do a 3D view:

glMatrixMode(GL_PROJECTION)
glLoadIdentity()
gluPerspective(...)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()

gluLookAt(...)

#draw world


To do a 2D view:

glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(...) or gluOrtho2D(...)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()

#draw HUD


Ian
Although Ian's code is good you perhaps shouldn't be going down the old fixed function pipeline route. OpenGL 3 has already deprecated quite a bit of the fixed function and shaders have been available since, I believe, openGL 1.5. It's all on the pyopengl and opengl websites anyway.

Adam.

Reply via email to