-
-
Save hopewise/0b074d125f5b8317bfc1882865927740 to your computer and use it in GitHub Desktop.
As I tried to change color.. line 50 to 54
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package openfl._internal.renderer.opengl; | |
import lime.utils.Float32Array; | |
import openfl._internal.renderer.RenderSession; | |
import openfl.display.Bitmap; | |
import openfl.filters.ShaderFilter; | |
import openfl.gl.GL; | |
import openfl.gl.GLProgram; | |
import openfl.gl.GLUniformLocation; | |
@:access(openfl.display.Bitmap) | |
@:access(openfl.display.BitmapData) | |
@:access(openfl.display.Stage) | |
class GLBitmap { | |
public static inline function render (bitmap:Bitmap, renderSession:RenderSession):Void { | |
if (!bitmap.__renderable || bitmap.__worldAlpha <= 0) return; | |
var gl = renderSession.gl; | |
if (bitmap.bitmapData != null && bitmap.bitmapData.__isValid) { | |
var shader; | |
if (bitmap.__filters != null && Std.is (bitmap.__filters[0], ShaderFilter)) { | |
shader = cast (bitmap.__filters[0], ShaderFilter).shader; | |
} else { | |
shader = renderSession.shaderManager.defaultShader; | |
} | |
renderSession.blendModeManager.setBlendMode (bitmap.blendMode); | |
renderSession.shaderManager.setShader (shader); | |
renderSession.maskManager.pushObject (bitmap); | |
var renderer:GLRenderer = cast renderSession.renderer; | |
gl.enableVertexAttribArray (shader.data.aAlpha.index); | |
gl.uniformMatrix4fv (shader.data.uMatrix.index, false, renderer.getMatrix (bitmap.__renderTransform)); | |
// Here is my code to change color | |
var shaderProgram:GLProgram = GL.createProgram (); | |
gl.linkProgram (shaderProgram); | |
var myColor = new Float32Array([1, 1, 0, 1]); | |
gl.uniform4fv (gl.getUniformLocation (shaderProgram, "myColor"), myColor); | |
gl.bindTexture (gl.TEXTURE_2D, bitmap.bitmapData.getTexture (gl)); | |
if (renderSession.allowSmoothing && (bitmap.smoothing || renderSession.upscaled)) { | |
gl.texParameteri (gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); | |
gl.texParameteri (gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); | |
} else { | |
gl.texParameteri (gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); | |
gl.texParameteri (gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); | |
} | |
gl.bindBuffer (gl.ARRAY_BUFFER, bitmap.bitmapData.getBuffer (gl, bitmap.__worldAlpha)); | |
gl.vertexAttribPointer (shader.data.aPosition.index, 3, gl.FLOAT, false, 6 * Float32Array.BYTES_PER_ELEMENT, 0); | |
gl.vertexAttribPointer (shader.data.aTexCoord.index, 2, gl.FLOAT, false, 6 * Float32Array.BYTES_PER_ELEMENT, 3 * Float32Array.BYTES_PER_ELEMENT); | |
gl.vertexAttribPointer (shader.data.aAlpha.index, 1, gl.FLOAT, false, 6 * Float32Array.BYTES_PER_ELEMENT, 5 * Float32Array.BYTES_PER_ELEMENT); | |
gl.drawArrays (gl.TRIANGLE_STRIP, 0, 4); | |
renderSession.maskManager.popObject (bitmap); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment