Advertisement
Guest User

Untitled

a guest
May 19th, 2015
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 3.20 KB | None | 0 0
  1. val vertices = Array(
  2.       -0.5f, 0.5f, 0f, 1f, 0f, 0f,
  3.       -0.5f, -0.5f, 0f, 0f, 1f, 0f,
  4.       0.5f, -0.5f, 0f, 0f, 0f, 1f,
  5.  
  6.       0.5f, -0.5f, 0f, 0f, 0f, 1f,
  7.       0.5f, 0.5f, 0f, 0f, 1f, 0f,
  8.       -0.5f, 0.5f, 0f, 1f, 0f, 0f
  9.     )
  10.  
  11.     val buffer = BufferUtils.createFloatBuffer(vertices.length)
  12.     buffer.put(vertices)
  13.     buffer.flip()
  14.  
  15.     val vao = GL30.glGenVertexArrays()
  16.     GL30.glBindVertexArray(vao)
  17.  
  18.     val vbo = GL15.glGenBuffers()
  19.     GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, vbo)
  20.     GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buffer, GL15.GL_STATIC_DRAW)
  21.  
  22.     //GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 3*4, 0)
  23.  
  24.     //GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0)
  25.  
  26. //    GL30.glBindVertexArray(0)
  27.  
  28.     val vertexShaderID = GL20.glCreateShader(GL20.GL_VERTEX_SHADER)
  29.     GL20.glShaderSource(vertexShaderID, sourceToString("src\\org\\xulufworld\\game\\vertex_shader.glsl"))
  30.     GL20.glCompileShader(vertexShaderID)
  31.  
  32.     val fragmentShaderID = GL20.glCreateShader(GL20.GL_FRAGMENT_SHADER)
  33.     GL20.glShaderSource(fragmentShaderID, sourceToString("src\\org\\xulufworld\\game\\fragment_shader.glsl"))
  34.     GL20.glCompileShader(fragmentShaderID)
  35.  
  36.     val programID = GL20.glCreateProgram()
  37.     GL20.glAttachShader(programID, vertexShaderID)
  38.     GL20.glAttachShader(programID, fragmentShaderID)
  39.     GL30.glBindFragDataLocation(programID, 0, "fragColour")
  40.     GL20.glLinkProgram(programID)
  41.  
  42.     val status = GL20.glGetProgrami(programID, GL20.GL_LINK_STATUS);
  43.     if (status != GL11.GL_TRUE) {
  44.       throw new RuntimeException(GL20.glGetProgramInfoLog(programID));
  45.     }
  46.  
  47.     GL20.glUseProgram(programID)
  48.     val posAttrib = GL20.glGetAttribLocation(programID, "position")
  49.     GL20.glEnableVertexAttribArray(posAttrib)
  50.     GL20.glVertexAttribPointer(posAttrib, 3, GL11.GL_FLOAT, false, 6 * 4, 0)
  51.  
  52.     val colourAttrib = GL20.glGetAttribLocation(programID, "colour")
  53.     GL20.glEnableVertexAttribArray(colourAttrib)
  54.     GL20.glVertexAttribPointer(colourAttrib, 3, GL11.GL_FLOAT, false, 6 * 4, 3 * 4)
  55.  
  56.     val uniModel = GL20.glGetUniformLocation(programID, "model")
  57.     val model = new Matrix4f()
  58.     GL20.glUniformMatrix4fv(uniModel, false, model.getBuffer)
  59.  
  60.     val uniView = GL20.glGetUniformLocation(programID, "view")
  61.     val view = new Matrix4f()
  62.     GL20.glUniformMatrix4fv(uniView, false, view.getBuffer)
  63.  
  64.     val uniProjection = GL20.glGetUniformLocation(programID, "projection")
  65.     val ratio = 640f/480f
  66.     val projection = Matrix4f.orthographic(-ratio, ratio, -1f, 1f, -1f, 1f)
  67.     GL20.glUniformMatrix4fv(uniProjection, false, projection.getBuffer)
  68.  
  69.     while(GLFW.glfwWindowShouldClose(window) != TRUE) {
  70.  
  71.       if(resized)
  72.       {
  73.         GL11.glViewport(0, 0, WIDTH, HEIGHT)
  74.         resized = false
  75.         println("Changed viewport")
  76.       }
  77.  
  78.       GLFW.glfwPollEvents()
  79.  
  80.       GL11.glClearColor(0.0f, 0.5f, 0.5f, 1)
  81.       GL11.glClear(GL11.GL_COLOR_BUFFER_BIT)
  82.  
  83.       GL30.glBindVertexArray(vao)
  84.       GL20.glEnableVertexAttribArray(0)
  85.  
  86.       GL20.glUseProgram(programID)
  87.  
  88.       GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, 6)
  89.  
  90.       GL20.glDisableVertexAttribArray(0)
  91.       GL30.glBindVertexArray(0)
  92.  
  93.       GLFW.glfwSwapBuffers(window)
  94.     }
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement