>OpenGL3 を使用して通常の2D 六角形を画面にレンダリングしたいのですが、本来よりもはるかに広いです。
ここに私の六角形配列(ローカル座標)があります:
float a[6][4] = {{ -1.0,0.0f, 0.0f, 1.0f }, { -sin30, cos30, 0.0f, 1.0f }, {-sin30, -cos30, 0.0f, 1.0f }, {sin30, cos30, 0.0f, 1.0f },{sin30, -cos30, 0.0f, 1.0f },{1.0, 0.0, 0.0f, 1.0f }};
次に、Hexagon を World 座標に変換します。
for(int i=0;i<6;i++)
{
a[i][0] = a[i][0]*600+(float)width/2.0;
a[i][1] = a[i][1]*600+(float)height/2.0;
a[i][2] = a[i][2]*600;
//a[i][3] = a[i][3]*600;
}
Vertex-Shader は、これを画面に変換する必要があります。
float arr[4][4] = { {2.0/(float)width, 0.0, 0.0, -1.0},
{0.0, 2.0/(float)height, 0.0, -1.0},
{0.0, 0.0, 0.0, 0.0},
{0.0, 0.0, 0.0, 1.0}};
char* code2 =
{
"#version 120\n"\
"\n"\
"layout(location=0) in vec4 in_Position;\n"\
"layout(location=1) in vec4 in_Color;\n"\
"out vec4 ex_Color;\n"\
"uniform mat4 Transform;\n"\
"\n"\
"void main(void)\n"\
"{\n"\
" gl_Position = Transform*in_Position;\n"\
" ex_Color = in_Color;\n"\
"}\n"
};
私は Windows PC で作業し、glViewport(0,0,width,height); を呼び出します。前と私は 2D オブジェクトのみを描画します。私のシェーダーは正しいマトリックス (ColoumnMajor) を取得します。変形を修正するためのアイデアはありますか?