this exampleと同様のウィンドウレベルを適用しようとしていますが、画像上にマウスをドラッグすると明るさ+コントラスト効果が表示されます。WebGLで輝度+コントラストを実現する方法は?
しかし、WebGLを使用して同じことを達成したいのですが、GPUはCPUよりも高速に処理するためです。
ここに私がやっていることだ。
バーテックスシェーダ:
attribute vec3 attrVertexPos;
attribute vec2 attrTextureCoord;
varying highp vec2 vTextureCoord;
void main(void) {
gl_Position = vec4(attrVertexPos, 0.81);
vTextureCoord = attrTextureCoord;
}
フラグメントシェーダ:
#ifdef GL_ES
precision highp float;
#endif
varying highp vec2 vTextureCoord;
uniform sampler2D uImage;
uniform float brightnessFactor;
uniform float contrastFactor;
void main(void) {
gl_FragColor = texture2D(uImage, vTextureCoord) *(brightnessFactor/contrastFactor);
}
しかし、予想通り、それは上記のリンクに従って動作しません。
var isMouseDown = false;
document.getElementById('canvas').onmousedown = function() { isMouseDown = true };
document.getElementById('canvas').onmouseup = function() { isMouseDown = false };
document.getElementById('canvas').onmousemove = function(e) {
if (isMouseDown) {
var intWidth = $('canvas').innerWidth();
var intHeight = $('canvas').innerHeight();
var x = (e.clientX/intWidth)*100;
var y = (e.clientY/intHeight)*100;
console.log(x/10 + ' :: ' + y/10);
brightnessVal = x/10;
gl.uniform1f(gl.getUniformLocation(program, "contrastFactor"), brightnessVal);
contrastVal = y/10;
gl.uniform1f(gl.getUniformLocation(program, "brightnessFactor"), contrastVal);
}
};
、それは私に間違った結果得られます。varレンダリング=機能(){ \t gl.clear(gl.COLOR_BUFFER_BIT | GLを。DEPTH_BUFFER_BIT); \t gl.drawElements(gl.TRIANGLES、indices.length、gl.UNSIGNED_SHORT、0); \t requestAnimationFrame(render); } –
OK、少し詳しく説明できますか:あなたが見ている画像に何が問題なのですか?あなたはページやjsfiddleをリンクすることができますので、私はより詳しく見ることができますか? –
確かに、私はあなたのためにフィドルを作成させてください –