GLSL gl_VertexID没有递增

时间:2016-09-14 18:34:48

标签: c++ opengl glsl glfw glew

我目前正在使用GLEW和GLFW在C ++中制作2D游戏引擎! 目前我正在研究精灵和渲染它们的方法。我希望能够根据需要调整它们的大小,但奇怪的是我的尝试没有成功。我实现这一点的方法是简单地创建一个带有6个顶点的VBO,它们都有(0,0)作为位置。然后我会调整大小并使用顶点着色器设置它们的位置。

VertexShader.vert:

 ## Get list of loaded packages into X 

 X <- .packages()

 # find functions using `ls()` with is. pattern over multiple loaded packages inside X
 # Suggested by Rich Scriven Over Comments

 sapply(X, function(X) { 
 paste0(X,":",ls(paste0("package:",X), pattern = "is\\."))
 })

但奇怪的是,这不符合我的预期。它没有显示任何东西。 当我像这样添加vertPos到glPosition时:

#version 140

in vec2 vertPos;
in vec2 vertUV;

out vec2 fragPos;
out vec2 fragUV;

uniform vec2 position;
uniform vec2 size;

void main(){
    //POSITION
    gl_Position.z = 0.0;
    gl_Position.w = 1.0;

    gl_Position.x = position.x*2 - 1;
    gl_Position.y = position.y*2 - 1;

    //SIZE
    switch(gl_VertexID){
        case 1: gl_Position.x += size.x; break;
        case 5: gl_Position.x += size.x; break;

        case 2: gl_Position.y += size.y; break;
        case 3: gl_Position.y += size.y; break;

        case 4: gl_Position.x += size.x; gl_Position.y += size.y; break;
    }

    fragPos = vertPos;
    fragUV = vec2(vertUV.x, 1.0 - vertUV.y); 
}

并且还创建了一个具有一些起始“形状”的VBO that。 我真的不知道为什么我的尝试没有成功。

0 个答案:

没有答案