OpenGL场景到屏幕转换

时间:2013-05-03 09:28:32

标签: opengl transformation

我想使用> OpenGL3将常规 2D Hexagon渲染到我的屏幕上,但它应该比它宽得多。

这是我的Hexagon数组(本地坐标):

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转换为世界坐标:

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;
    }

我的顶点着色器现在应该将其转换为我的屏幕:

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,宽度,高度);之前和我只绘制2D对象。 我的着色器获得正确的Matrix(ColoumnMajor)。 一些改变变形的想法?

0 个答案:

没有答案