我目前正在使用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。 我真的不知道为什么我的尝试没有成功。