0
OpenGL ES 2.0でBMP画像をプロットするには、 (x1、y1は左下座標、x2、y2は画面上のオブジェクトの右上座標、tempimageデータは格納されているbmp画像情報へのポインタです)回転オブジェクトOpenGL ES 2.0
struct
{
GLuint uiId;
GLuint uiLowerLeftLoc;
GLuint uiScaleMatrixLoc;
GLuint auiLoc[eNumUniforms];
}
m_ShaderProgram;
glUniform2f(m_ShaderProgram.uiLowerLeftLoc, x1, y1);
float afMatrix[4] = { x2 - x1, 0, 0, y2 - y1 };
glUniformMatrix2fv(m_ShaderProgram.uiScaleMatrixLoc, 1, GL_FALSE, afMatrix);
glBindTexture(GL_TEXTURE_2D, m_uiTexForeground);
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, tempimagedata);
glBindBuffer(GL_ARRAY_BUFFER, m_uiVbo);
glEnableVertexAttribArray(VERTEX_ARRAY);
glVertexAttribPointer(VERTEX_ARRAY, 2, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
glDisableVertexAttribArray(VERTEX_ARRAY);
オブジェクトをアングルで回転したいとします。これはどのように達成できますか?
私は、OpenGLに新しいです。理解によれば、使用されるMVP行列は3D回転(私が間違っていれば修正してください)です。これは今のところかなり複雑です。オブジェクトの2D回転だけの方法はありますか? 現在、私たちはPNG/JPEG/BMP画像とカスタムボックスを2D平面でプロットしています。これは私たちが回転させたいものです。これらのオブジェクトの頂点座標を計算しています(ボックスの4つの座標、BMP/JPEG/PNGの2つの座標)。座標を計算しようとしましたが、新しい方向でプロットしようとしましたが、シェーダーの適用が正しく行われていません。 これを手伝ってもらえますか? –
回転の場合は、行列が移動する方法です。 MVPシステムは2Dであっても使用する必要があります。ただし、翻訳を狭くしてxとyにスケールすることはできますが、回転についてはz回転行列を実装するだけです。 – SporreKing
覚えておくべき重要なことは、レンダリングしているメッシュに回転を適用すると、その回転がローカル原点を中心に回転することです。このため、シェーダで変換を適用する必要があり、外部から頂点座標を変更できないのはなぜですか。さもなければ、原点はメッシュから離れて移動し、原点を周回しているように見えます。多くの人がこれを忘れてしまい、間違った結果が出る原因になる可能性があります。 – SporreKing