私はテクスチャに描画しようとしているので、レンダリングは互いに重ね合わされていきます。 2つのテクスチャと2つのフレームバッファを使用しています。 テクスチャ[0]はフレームバッファ[0]に添付され、テクスチャ[1]はフレームバッファ[1]に添付されます。2つのテクスチャを切り替えるにはどうすればいいですか?
問題は、以前のレンダリングがテクスチャに保存されていないことです。 私は、bindframebuffer()がテクスチャにレンダリングされると考えました。 私のフラグメントシェーダ:
precision mediump float; // fragment shaders don't have a default precision so we need to pick one. mediump is a good default
varying vec2 v_texCoord; // the texCoords passed in from the vertex shader.
uniform vec2 u_resolution; // a uniform
uniform vec2 u_mouse;
uniform sampler2D u_image; // this isn't set, so it will default to 0 (the current active texture)
void main() {
vec4 texColor = texture2D(u_image, v_texCoord); // Look up a color from the texture.
vec2 coord = vec2(gl_FragCoord.x,u_resolution.y-gl_FragCoord.y);
vec4 color = step(distance(coord,u_mouse),100.0)*vec4(1,0,0,1) + step(100.0,distance(coord,u_mouse))*texColor;
gl_FragColor = color; // gl_FragColor is a special variable a fragment shader is responsible for setting
}
u_imageは、アクティブな質感を0をデフォルトに設定されています。
私は見落としているものはありますか?なぜ以前のレンダリングは互いに重ね合わされていませんか?あたかもテクスチャが変更されていないかのように最新のレンダリングを表示しています。ここ
は、頂点シェーダである:
precision mediump float;
attribute vec2 a_position; // an attribute will receive data from a buffer
attribute vec2 a_texCoord;
varying vec2 v_texCoord; // a varying
uniform vec2 u_resolution; // a uniform
uniform vec2 u_mouse;
uniform float u_flip;
// all shaders have a main function
void main() {
v_texCoord = a_texCoord; // pass the texCoord to the fragment shader.The GPU will interpolate this value between points
vec2 zeroToOne = a_position/u_resolution; // convert the position from pixels to 0.0 to 1.0
vec2 zeroToTwo = zeroToOne * 2.0; // convert from 0->1 to 0->2
vec2 clipSpace = zeroToTwo - 1.0; // convert from 0->2 to -1->+1 (clipspace)
// gl_Position is a special variable a vertex shader is responsible for setting
gl_Position = vec4(clipSpace * vec2(1, u_flip), 0, 1);
}
:ここ
が更新され、頂点/フラグメントシェーダですか?マウスカーソルの周りに赤色(別のテクスチャの+色)の円を描きますか? –
はい、マウスを動かすと、マウスカーソルの周りに赤い円が描かれます。私は前のドローを維持したいが、何らかの理由でそれをしていないので、マウスが移動した一連の円ではなく、赤い円しか得られない。 2つのテクスチャと2つのフレームバッファを使用して、円を描き、前の図面を保持するようにそれらの間を交互に使用できると思っていましたが、機能しません。なぜか分からない。 – user3591153
私が心配しているのは、テクスチャがデータを保存していないかのように見えるということです。私がフレームバッファをバインドするときに私が描画している場合は、その後、色を取得するためにテクスチャをバインドすると、以前のレンダリングされたイメージを持つはずです。それでも私が色を読んだときには、以前に描画されたものは表示されません。ただ空白です。 – user3591153