Drawing Penger :)

This commit is contained in:
2026-01-18 14:30:19 +01:00
parent e3258e5266
commit de60139030
3 changed files with 45 additions and 15 deletions

View File

@@ -5,6 +5,6 @@ out vec4 fragcolor;
void main(){
fragcolor = texture( image , texCoord) * vec4(1.0, 0.5, 0.2, 1.0);
fragcolor = texture(image, texCoord); // vec4(1.0, 0.5, 0.2, 1.0);
}

View File

@@ -1,7 +1,10 @@
#version 460 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec2 aTex;
out vec2 texCoord;
void main(){
gl_Position = vec4(aPos, 1.0);
};
texCoord = aTex;
}

View File

@@ -11,7 +11,11 @@ float vertices[] = {
0.5f, 0.5f, 0.0f, 0.5f, -0.5f, 0.0f, -0.5f, -0.5f, 0.0f, -0.5f, 0.5f, 0.0f,
};
float texCoords [] ={ 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f};
float texCoords [] ={
1.0f, 0.0f,
1.0f, 1.0f,
0.0f, 1.0f,
0.0f, 0.0f};
uint indices[] = {0, 1, 3, 1, 2, 3};
@@ -27,6 +31,8 @@ typedef struct Sprite{
char* Name;
};
GLuint texture;
GLuint texVBO;
void prepRender(){
// Load Vertex Shader
@@ -44,7 +50,7 @@ void prepRender(){
if (!success) {
char log[512];
glGetProgramInfoLog(RenderVariables.shaderProgram, 512, NULL, log);
printf("LINK ERROR SHADERPROGRAM", log);
printf("LINK ERROR SHADERPROGRAM %s \n", log);
}
glDeleteShader(vert_shader);
glDeleteShader(frag_shader);
@@ -65,8 +71,33 @@ void prepRender(){
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
// Load images
uint width, height;
uint channels =4;
unsigned char * data = stbi_load("../sprites/mineger.png" ,&width, &height, &channels, 4);
if ( data == NULL){
printf("Failed to load sprite");
return ;
}
printf("Loaded PNG penger is %u * %u and has %u channels\n", width, height , channels);
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width,height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glGenerateMipmap(GL_TEXTURE_2D);
free(data);
glGenBuffers(1, &texVBO);
glBindBuffer(GL_ARRAY_BUFFER, texVBO);
glBufferData( GL_ARRAY_BUFFER, sizeof(texCoords), texCoords, GL_STATIC_DRAW);
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 2*sizeof(float),(void*)0);
glEnableVertexAttribArray(1);
}
@@ -95,7 +126,7 @@ RGFW_window *SetupWindow() {
// Initialize GLAD
if (!gladLoadGLLoader((GLADloadproc)RGFW_getProcAddress_OpenGL)) {
printf("Failed to load GLAD!");
printf("Failed to load GLAD!\n");
return NULL;
}
return win;
@@ -111,7 +142,7 @@ char *LoadFile(const char *Path) {
FILE *fptr;
fptr = fopen(Path, "r");
if (!fptr) {
printf("Failed to open file");
printf("Failed to open file\n");
return NULL;
}
long size = stat_GetSize(fptr);
@@ -145,13 +176,6 @@ void Setup() {
prepRender();
// Load images
uint width, height;
uint channels =4;
unsigned char * data = stbi_load("../sprites/mineger.png" ,&width, &height, &channels, 4);
printf("Loaded PNG penger is %u * %u and has %u channels", width, height , channels);
free(data);
// Setup world etc....
}
@@ -161,6 +185,9 @@ void clearScreen(){
}
void Render(RGFW_window * win){
glUseProgram(RenderVariables.shaderProgram);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture);
glUniform1i(glGetUniformLocation(RenderVariables.shaderProgram, "image"), 0);
glBindVertexArray(RenderVariables.VAO);
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
RGFW_window_swapBuffers_OpenGL(win);