Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class DataGL(val data: Array[Float],
- val width: Int,
- val height: Int,
- val dimensions: Int,
- val texUnit: Int) extends RenderGL {
- val id = _createTexture()
- def _format() = dimensions match {
- case 1 => (GL30.GL_R32F, GL11.GL_R)
- case 2 => (GL30.GL_RG32F, GL30.GL_RG)
- case 3 => (GL30.GL_RGB32F, GL11.GL_RGB)
- case 4 => (GL30.GL_RGBA32F, GL11.GL_RGBA)
- case _ => throw new RuntimeException("Illegal texture dimension of " + dimensions)
- }
- def _createTexture() = {
- GL13.glActiveTexture(GL13.GL_TEXTURE0 + texUnit)
- val tid = GL11.glGenTextures()
- GL11.glBindTexture(GL11.GL_TEXTURE_2D, tid)
- GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST)
- GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST)
- GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL13.GL_CLAMP_TO_BORDER)
- GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL13.GL_CLAMP_TO_BORDER)
- val bdata = BufferUtils.createFloatBuffer(data.length)
- bdata.put(data)
- bdata.flip()
- val format = _format()
- val precisionFormat: Int = format._1
- val components: Int = format._2
- GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, precisionFormat, width, height, 0, components, GL11.GL_FLOAT, bdata)
- GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0)
- GL13.glActiveTexture(GL13.GL_TEXTURE0)
- assert(GL11.glGetError() == GL11.GL_NO_ERROR)
- tid
- }
- override def draw(): Unit = {
- GL13.glActiveTexture(GL13.GL_TEXTURE0 + texUnit)
- GL11.glBindTexture(GL11.GL_TEXTURE_2D, id)
- GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST)
- GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST)
- GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL13.GL_CLAMP_TO_BORDER)
- GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL13.GL_CLAMP_TO_BORDER)
- }
- override def dispose(): Unit = GL11.glDeleteTextures(id)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement