delete shaders after linking them in program, which reduces memory by like 0.1 MB (very minor)
This commit is contained in:
@@ -1,12 +1,6 @@
|
|||||||
structure AppDraw =
|
structure AppDraw =
|
||||||
struct
|
struct
|
||||||
type draw_object =
|
type draw_object = {vertexBuffer: Word32.word, program: Word32.word}
|
||||||
{ vertexBuffer: Word32.word
|
|
||||||
, vertexShader: Word32.word
|
|
||||||
, fragmentBuffer: Word32.word
|
|
||||||
, fragmentShader: Word32.word
|
|
||||||
, program: Word32.word
|
|
||||||
}
|
|
||||||
|
|
||||||
fun initDrawObject (vertexShaderString, fragmentShaderString) : draw_object =
|
fun initDrawObject (vertexShaderString, fragmentShaderString) : draw_object =
|
||||||
let
|
let
|
||||||
@@ -24,24 +18,21 @@ struct
|
|||||||
val _ = Gles3.attachShader (program, vertexShader)
|
val _ = Gles3.attachShader (program, vertexShader)
|
||||||
val _ = Gles3.attachShader (program, fragmentShader)
|
val _ = Gles3.attachShader (program, fragmentShader)
|
||||||
val _ = Gles3.linkProgram program
|
val _ = Gles3.linkProgram program
|
||||||
|
|
||||||
|
(* Flag shaders for deletion as we no longer need them
|
||||||
|
* once the program is linked. *)
|
||||||
in
|
in
|
||||||
{ vertexBuffer = vertexBuffer
|
{vertexBuffer = vertexBuffer, program = program}
|
||||||
, vertexShader = vertexShader
|
|
||||||
, fragmentBuffer = fragmentBuffer
|
|
||||||
, fragmentShader = fragmentShader
|
|
||||||
, program = program
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
fun initGraphLines () =
|
fun initGraphLines () =
|
||||||
let
|
let
|
||||||
val graphDrawObject = initDrawObject
|
val graphDrawObject = initDrawObject
|
||||||
(Constants.graphVertexShaderString, Constants.graphFragmentShaderString)
|
(Constants.graphVertexShaderString, Constants.graphFragmentShaderString)
|
||||||
val {vertexBuffer, program, ...} = graphDrawObject
|
val {vertexBuffer, program} = graphDrawObject
|
||||||
|
|
||||||
val _ = Gles3.bindBuffer vertexBuffer
|
val _ = Gles3.bindBuffer vertexBuffer
|
||||||
val _ =
|
val _ = Gles3.bufferData (#[], 0, Gles3.STATIC_DRAW ())
|
||||||
Gles3.bufferData (#[], 0, Gles3.STATIC_DRAW ())
|
|
||||||
val _ = Gles3.vertexAttribPointer (0, 2, 2, 0)
|
val _ = Gles3.vertexAttribPointer (0, 2, 2, 0)
|
||||||
val _ = Gles3.enableVertexAttribArray 0
|
val _ = Gles3.enableVertexAttribArray 0
|
||||||
in
|
in
|
||||||
@@ -59,7 +50,7 @@ struct
|
|||||||
|
|
||||||
fun drawGraphLines (graphDrawObject: draw_object, graphDrawLength) =
|
fun drawGraphLines (graphDrawObject: draw_object, graphDrawLength) =
|
||||||
let
|
let
|
||||||
val {vertexBuffer, program, ...} = graphDrawObject
|
val {vertexBuffer, program} = graphDrawObject
|
||||||
val _ = Gles3.bindBuffer vertexBuffer
|
val _ = Gles3.bindBuffer vertexBuffer
|
||||||
val _ = Gles3.vertexAttribPointer (0, 2, 2, 0)
|
val _ = Gles3.vertexAttribPointer (0, 2, 2, 0)
|
||||||
val _ = Gles3.enableVertexAttribArray 0
|
val _ = Gles3.enableVertexAttribArray 0
|
||||||
@@ -75,7 +66,7 @@ struct
|
|||||||
( Constants.colouredVertexShaderString
|
( Constants.colouredVertexShaderString
|
||||||
, Constants.colouredFragmentShaderString
|
, Constants.colouredFragmentShaderString
|
||||||
)
|
)
|
||||||
val {vertexBuffer, program, ...} = buttonDrawObject
|
val {vertexBuffer, program} = buttonDrawObject
|
||||||
|
|
||||||
val _ = Gles3.bindBuffer vertexBuffer
|
val _ = Gles3.bindBuffer vertexBuffer
|
||||||
val _ = Gles3.bufferData (#[], 0, Gles3.STATIC_DRAW ())
|
val _ = Gles3.bufferData (#[], 0, Gles3.STATIC_DRAW ())
|
||||||
@@ -100,7 +91,7 @@ struct
|
|||||||
fun drawButton (buttonDrawObject: draw_object, buttonDrawLength) =
|
fun drawButton (buttonDrawObject: draw_object, buttonDrawLength) =
|
||||||
if buttonDrawLength > 0 then
|
if buttonDrawLength > 0 then
|
||||||
let
|
let
|
||||||
val {vertexBuffer, program, ...} = buttonDrawObject
|
val {vertexBuffer, program} = buttonDrawObject
|
||||||
val _ = Gles3.bindBuffer vertexBuffer
|
val _ = Gles3.bindBuffer vertexBuffer
|
||||||
val _ = Gles3.vertexAttribPointer (0, 2, 5, 0)
|
val _ = Gles3.vertexAttribPointer (0, 2, 5, 0)
|
||||||
val _ = Gles3.enableVertexAttribArray 0
|
val _ = Gles3.enableVertexAttribArray 0
|
||||||
@@ -118,7 +109,7 @@ struct
|
|||||||
let
|
let
|
||||||
val triangleDrawObject = initDrawObject
|
val triangleDrawObject = initDrawObject
|
||||||
(Constants.graphVertexShaderString, Constants.graphFragmentShaderString)
|
(Constants.graphVertexShaderString, Constants.graphFragmentShaderString)
|
||||||
val {vertexBuffer, program, ...} = triangleDrawObject
|
val {vertexBuffer, program} = triangleDrawObject
|
||||||
|
|
||||||
val _ = Gles3.bindBuffer vertexBuffer
|
val _ = Gles3.bindBuffer vertexBuffer
|
||||||
val _ = Gles3.bufferData (#[], 0, Gles3.STATIC_DRAW ())
|
val _ = Gles3.bufferData (#[], 0, Gles3.STATIC_DRAW ())
|
||||||
@@ -140,7 +131,7 @@ struct
|
|||||||
fun drawTriangles (triangleDrawObject: draw_object, triangleDrawLength) =
|
fun drawTriangles (triangleDrawObject: draw_object, triangleDrawLength) =
|
||||||
if triangleDrawLength > 0 then
|
if triangleDrawLength > 0 then
|
||||||
let
|
let
|
||||||
val {vertexBuffer, program, ...} = triangleDrawObject
|
val {vertexBuffer, program} = triangleDrawObject
|
||||||
val _ = Gles3.bindBuffer vertexBuffer
|
val _ = Gles3.bindBuffer vertexBuffer
|
||||||
val _ = Gles3.vertexAttribPointer (0, 2, 2, 0)
|
val _ = Gles3.vertexAttribPointer (0, 2, 2, 0)
|
||||||
val _ = Gles3.enableVertexAttribArray 0
|
val _ = Gles3.enableVertexAttribArray 0
|
||||||
|
|||||||
Reference in New Issue
Block a user