2
2
Triangles.hs (adapted from triangles.cpp which is (c) The Red Book Authors.)
3
3
Copyright (c) Sven Panne 2014 <[email protected] >
4
4
This file is part of HOpenGL and distributed under a BSD-style license
5
- See the file libraries/ GLUT/LICENSE
5
+ See the file GLUT/LICENSE
6
6
7
7
Our first OpenGL program.
8
8
-}
@@ -33,11 +33,12 @@ init = do
33
33
Vertex2 0.90 0.90 ,
34
34
Vertex2 (- 0.85 ) 0.90 ] :: [Vertex2 GLfloat ]
35
35
numVertices = length vertices
36
+ vertexSize = sizeOf (head vertices)
36
37
37
38
arrayBuffer <- genObjectName
38
39
bindBuffer ArrayBuffer $= Just arrayBuffer
39
40
withArray vertices $ \ ptr -> do
40
- let size = fromIntegral (numVertices * sizeOf ( head vertices) )
41
+ let size = fromIntegral (numVertices * vertexSize )
41
42
bufferData ArrayBuffer $= (size, ptr, StaticDraw )
42
43
43
44
program <- loadShaders [
@@ -48,10 +49,12 @@ init = do
48
49
let firstIndex = 0
49
50
vPosition = AttribLocation 0
50
51
vertexAttribPointer vPosition $=
51
- (ToFloat , VertexArrayDescriptor 2 Float 0 (bufferOffset firstIndex))
52
+ (ToFloat ,
53
+ VertexArrayDescriptor 2 Float 0 (bufferOffset (firstIndex * vertexSize)))
52
54
vertexAttribArray vPosition $= Enabled
53
55
54
- return $ Descriptor triangles firstIndex (fromIntegral numVertices)
56
+ return $
57
+ Descriptor triangles (fromIntegral firstIndex) (fromIntegral numVertices)
55
58
56
59
display :: Descriptor -> DisplayCallback
57
60
display (Descriptor triangles firstIndex numVertices) = do
0 commit comments