2D形状坐标与现代Opengl

时间:2016-10-17 12:03:37

标签: c++ opengl glsl opengl-4

我试图在现代opengl中渲染一系列2D形状(矩形,圆形等),希望不使用任何变换矩阵。我想让我能够指定一个2个三角形的矩形坐标,如下所示:

float V[] = { 20.0, 20.0, 0.0, 
              40.0, 20.0, 0.0,
              40.0, 40.0, 0.0, 
              40.0, 40.0, 0.0,
              20.0, 40.0, 0.0,
              20.0, 20.0, 0.0 }

您可以看到顶点坐标是在视口中指定的吗?空间(我相信这就是所谓的)。现在,当这个由opengl渲染时,它不起作用,因为剪辑空间从-1.0到1.0,原点位于中心。

对我来说,处理这个问题的正确方法是什么?我最初认为将glClipControl调整到左上角,0到1可以工作,但它没有。当剪辑控件设置为左上角且0到1时,原点仍然位于中心,但它确实允许Y轴在向下移动时增加(这是一个开始)。

理想情况下,我希望让opengl让0.0,0.0为左上角,1.0,1.0为右下角,然后我只是将每个顶点位置标准化,但我不知道如何使用opengl那种坐标系。

1 个答案:

答案 0 :(得分:0)

在顶点着色器中没有矩阵的情况下,可以很容易地进行这些变换:

public static void main(String[] args) throws IOException {
    File inFile = new File("DenverSortedCities.txt");

    if (inFile.exists()){
        Scanner input = new Scanner(inFile);

        while(input.hasNextLine()){
            String cityInfo = input.nextLine();
            String[] cityInfoArray = cityInfo.split("0,1");

            int populationValue = Integer.parseInt(cityInfo);
        }
        System.out.println(input.nextLine());

        input.close();
    } else {
        System.out.println(inFile.getName() + " does not exist.");
        System.exit(1);

    }
}
相关问题