OpenGL: Difference between revisions

From Rosetta Code
Content added Content deleted
(Perl)
 
(add Haskell example)
Line 2: Line 2:


In this task, the goal is to display [http://img358.imageshack.us/my.php?image=trianglegq3.png a smooth shaded triangle] with OpenGL.
In this task, the goal is to display [http://img358.imageshack.us/my.php?image=trianglegq3.png a smooth shaded triangle] with OpenGL.

==[[Haskell]]==
[[Category:Haskell]]

import Graphics.Rendering.OpenGL
import Graphics.UI.GLUT
main = do
getArgsAndInitialize
createWindow "Triangle"
displayCallback $= display
matrixMode $= Projection
loadIdentity
ortho2D 0 30 0 30
matrixMode $= Modelview 0
mainLoop
display = do
clear [ColorBuffer]
renderPrimitive Triangles $ do
corner 1 0 0 5 5
corner 0 1 0 25 5
corner 0 0 1 5 25
swapBuffers
corner r g b x y = do color (Color3 r g b :: Color3 GLfloat)
vertex (Vertex2 x y :: Vertex2 GLfloat)


==[[Perl]]==
==[[Perl]]==

Revision as of 01:58, 1 September 2007

Task
OpenGL
You are encouraged to solve this task according to the task description, using any language you may know.

In this task, the goal is to display a smooth shaded triangle with OpenGL.

Haskell

import Graphics.Rendering.OpenGL
import Graphics.UI.GLUT

main = do
  getArgsAndInitialize
  createWindow "Triangle"
  displayCallback $= display
      
  matrixMode $= Projection
  loadIdentity
  ortho2D 0 30 0 30
  matrixMode $= Modelview 0
  
  mainLoop

display = do
  clear [ColorBuffer]
  renderPrimitive Triangles $ do
    corner 1 0 0 5 5
    corner 0 1 0 25 5
    corner 0 0 1 5 25
  swapBuffers
       
corner r g b x y = do color  (Color3  r g b :: Color3  GLfloat)
                      vertex (Vertex2 x y   :: Vertex2 GLfloat)

Perl

use OpenGL;

sub triangle {
    glBegin GL_TRIANGLES;
    glColor3f 1.0, 0.0, 0.0;
    glVertex2f 5.0, 5.0;
    glColor3f 0.0, 1.0, 0.0;
    glVertex2f 25.0, 5.0;
    glColor3f 0.0, 0.0, 1.0;
    glVertex2f 5.0, 25.0;
    glEnd;
};

glpOpenWindow;
glMatrixMode GL_PROJECTION;
glLoadIdentity;
gluOrtho2D 0.0, 30.0, 0.0, 30.0;
glMatrixMode GL_MODELVIEW;

glClear GL_COLOR_BUFFER_BIT;
triangle;
glpFlush;

glpMainLoop;