Drawing Penger :)
This commit is contained in:
@@ -5,6 +5,6 @@ out vec4 fragcolor;
|
|||||||
|
|
||||||
void main(){
|
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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,10 @@
|
|||||||
#version 460 core
|
#version 460 core
|
||||||
|
|
||||||
layout (location = 0) in vec3 aPos;
|
layout (location = 0) in vec3 aPos;
|
||||||
|
layout (location = 1) in vec2 aTex;
|
||||||
|
out vec2 texCoord;
|
||||||
|
|
||||||
void main(){
|
void main(){
|
||||||
gl_Position = vec4(aPos, 1.0);
|
gl_Position = vec4(aPos, 1.0);
|
||||||
};
|
texCoord = aTex;
|
||||||
|
}
|
||||||
|
|||||||
53
src/main.c
53
src/main.c
@@ -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,
|
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};
|
uint indices[] = {0, 1, 3, 1, 2, 3};
|
||||||
|
|
||||||
@@ -27,6 +31,8 @@ typedef struct Sprite{
|
|||||||
char* Name;
|
char* Name;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GLuint texture;
|
||||||
|
GLuint texVBO;
|
||||||
|
|
||||||
void prepRender(){
|
void prepRender(){
|
||||||
// Load Vertex Shader
|
// Load Vertex Shader
|
||||||
@@ -44,7 +50,7 @@ void prepRender(){
|
|||||||
if (!success) {
|
if (!success) {
|
||||||
char log[512];
|
char log[512];
|
||||||
glGetProgramInfoLog(RenderVariables.shaderProgram, 512, NULL, log);
|
glGetProgramInfoLog(RenderVariables.shaderProgram, 512, NULL, log);
|
||||||
printf("LINK ERROR SHADERPROGRAM", log);
|
printf("LINK ERROR SHADERPROGRAM %s \n", log);
|
||||||
}
|
}
|
||||||
glDeleteShader(vert_shader);
|
glDeleteShader(vert_shader);
|
||||||
glDeleteShader(frag_shader);
|
glDeleteShader(frag_shader);
|
||||||
@@ -65,8 +71,33 @@ void prepRender(){
|
|||||||
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0);
|
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void *)0);
|
||||||
glEnableVertexAttribArray(0);
|
glEnableVertexAttribArray(0);
|
||||||
|
|
||||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
// Load images
|
||||||
glBindVertexArray(0);
|
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
|
// Initialize GLAD
|
||||||
if (!gladLoadGLLoader((GLADloadproc)RGFW_getProcAddress_OpenGL)) {
|
if (!gladLoadGLLoader((GLADloadproc)RGFW_getProcAddress_OpenGL)) {
|
||||||
printf("Failed to load GLAD!");
|
printf("Failed to load GLAD!\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return win;
|
return win;
|
||||||
@@ -111,7 +142,7 @@ char *LoadFile(const char *Path) {
|
|||||||
FILE *fptr;
|
FILE *fptr;
|
||||||
fptr = fopen(Path, "r");
|
fptr = fopen(Path, "r");
|
||||||
if (!fptr) {
|
if (!fptr) {
|
||||||
printf("Failed to open file");
|
printf("Failed to open file\n");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
long size = stat_GetSize(fptr);
|
long size = stat_GetSize(fptr);
|
||||||
@@ -145,13 +176,6 @@ void Setup() {
|
|||||||
prepRender();
|
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....
|
// Setup world etc....
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -161,6 +185,9 @@ void clearScreen(){
|
|||||||
}
|
}
|
||||||
void Render(RGFW_window * win){
|
void Render(RGFW_window * win){
|
||||||
glUseProgram(RenderVariables.shaderProgram);
|
glUseProgram(RenderVariables.shaderProgram);
|
||||||
|
glActiveTexture(GL_TEXTURE0);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, texture);
|
||||||
|
glUniform1i(glGetUniformLocation(RenderVariables.shaderProgram, "image"), 0);
|
||||||
glBindVertexArray(RenderVariables.VAO);
|
glBindVertexArray(RenderVariables.VAO);
|
||||||
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
|
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
|
||||||
RGFW_window_swapBuffers_OpenGL(win);
|
RGFW_window_swapBuffers_OpenGL(win);
|
||||||
|
|||||||
Reference in New Issue
Block a user