在this問題,我問如何創建一個「鏡像」的質感,現在我想搬到這個「鏡像」的形象倒在有關圖像的高度y軸。 我試圖像這樣具有高度不同的值,但我不能找到一個合適的解決方案:傳遞給texture2D
GLSL着色器 - 如何計算紋理的高度?
// Vertex Shader
uniform highp mat4 u_modelViewMatrix;
uniform highp mat4 u_projectionMatrix;
attribute highp vec4 a_position;
attribute lowp vec4 a_color;
attribute highp vec2 a_texcoord;
varying lowp vec4 v_color;
varying highp vec2 v_texCoord;
void main()
{
highp vec4 pos = a_position;
pos.y = pos.y - HEIGHT;
gl_Position = (u_projectionMatrix * u_modelViewMatrix) * pos;
v_color = a_color;
v_texCoord = vec2(a_texcoord.x, 1.0 - a_texcoord.y);
}
但我仍然需要找到一種方法來計算正如湯米提到的那樣,HEIGHT值。我試着用旋轉矩陣,但如何確保旋轉的圖像總是在原始圖像下? – seveves 2012-03-06 08:36:40
對於身高可以穿制服,做HEIGHT/viewport_height。 但更好的方法是做CPU側的矩陣。爲了確保它始終正確,您可以在CPP/ObjC代碼中執行類似操作: original_mdl_mat = ...; rotated_mdl_mat = Matrix.CreateTranslation(0,-image.Height,0)* Matrix.CreateRotationY(180)* original_mdl_mat; 然後將original_mdl_mat傳遞給您的頂點着色器以渲染正常圖像,並通過rotated_mdl_mat渲染旋轉。 注:我使用的DirectX/XNA符號在這裏,但你應該能夠適應它的OpenGL-ES。 – 2012-03-06 09:23:06
問題是,我沒有任何影響的事情發生在CPU上,因爲即時編程對接口,只允許改變着色器和接口不提供模型,視圖和投影分開。我只能訪問與視圖矩陣和投影矩陣結合的模型。界面提供的另一個矩陣是一個常規矩陣。 – seveves 2012-03-06 09:43:52