android - GLSL 2D 旋转不起作用

标签 android opengl-es glsl opengl-es-2.0

我想渲染二维图像。为此,我将所有内容缩放并转换为中心位置我想要的位置。我需要围绕中心旋转 2D 坐标,但是当我这样做时,好像涉及到一些 x 坐标,因为图像奇怪地变平了。这是代码:

attribute vec4 vPosition;
attribute vec2 a_texCoord;
varying vec2 v_texCoord;
uniform vec2 scale;
uniform vec2 trans;
uniform float move_down;
void main(){ 
    gl_Position = vPosition;
    gl_Position.x *= scale.x;
    gl_Position.y *= scale.y;
    gl_Position.x += trans.x;
    gl_Position.y += trans.y - move_down;
    gl_Position.x *= 2.0;
    gl_Position.y *= 2.0;
    gl_Position.x -= 1.0;
    gl_Position.y -= 1.0;
    gl_Position.x *= 0.2; //For visual testing only
    gl_Position.y *= 0.2; //Same
    gl_Position.x = cos(1.0)*gl_Position.x - sin(1.0)*gl_Position.y;
    gl_Position.y = sin(1.0)*gl_Position.x + cos(1.0)*gl_Position.y;
    v_texCoord = a_texCoord;
}

这是没有旋转线的图像...

Images are cropped down

这是旋转 1.0 弧度的图像...

enter image description here

显然有问题,因为它应该是一个简单的 2D 旋转。如果我旋转 90 度,图像就会完全消失。

使用适用于 Android 的 OpenGL-ES 2 完成。

我很感激对此的任何回答。

编辑:我也试过同样的问题:

mat4 RotationMatrix = mat4( cos(1.0), -sin(1.0), 0.0, 0.0,
                               sin(1.0),  cos(1.0), 0.0, 0.0,
                               0.0,           0.0, 1.0, 0.0,
                               0.0,           0.0, 0.0, 1.0 );
    gl_Position *= RotationMatrix;

最佳答案

我在向量之后乘以矩阵......错误的方式。 Matrix 的工作原理如下:

gl_Position = RotationMatrix * Position;

关于android - GLSL 2D 旋转不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321646/

相关文章:

javascript - WebGL/OpenGL : comparing the performance

iphone - ios游戏制作 mask 层效果

iphone - 当有很多重复顶点时,glDrawElements() 是否比 glDrawArrays() 更有效?

opengl - 使用 OpenGL 着色语言进行选择

android - Cocos2dx 构建问题

android - 我的自定义 View 没有显示,我应该如何修复它?

glsl - 有符号距离函数 - 3D 平面

opengl - GLSL聚光灯投影体积

Android OpenGL ES 2.0 多重纹理和相机

android - 如何同时使用 selenium 和 selendroid 进行测试