diff --git a/bin/back b/bin/back index 524cca2..8a8284a 100755 Binary files a/bin/back and b/bin/back differ diff --git a/obj/main.o b/obj/main.o index d995807..1c1186c 100644 Binary files a/obj/main.o and b/obj/main.o differ diff --git a/obj/menus.o b/obj/menus.o index 6f7cc8e..475e165 100644 Binary files a/obj/menus.o and b/obj/menus.o differ diff --git a/src/main.c b/src/main.c index 7b75c26..e81034d 100644 --- a/src/main.c +++ b/src/main.c @@ -410,10 +410,13 @@ const char *fragmentShaderSource = "#version 330 core\n" const char *vertexShaderSourceR = "#version 330 core\n" "layout (location = 0) in vec3 aPos;\n" + "layout (location = 1) in vec2 aTex;\n" "uniform mat4 scale;\n" "uniform mat4 slide;\n" + "out vec2 texCoord;\n" "void main() {\n" " gl_Position = slide * scale * vec4(aPos.x, aPos.y, aPos.z, 1.0);\n" + " texCoord = aTex;\n" "}\0"; const char *fragmentShaderSourceR = "#version 330 core\n" @@ -422,7 +425,7 @@ const char *fragmentShaderSourceR = "#version 330 core\n" "in vec2 texCoord;\n" "uniform sampler2D tex0;\n" "void main() {\n" - " FragColor = u_color2;\n" + " FragColor = texture(tex0, texCoord) * u_color2;\n" "}\0"; typedef enum file_extension {PNG, JPG, JPEG} file_extension; @@ -459,7 +462,7 @@ void generate_itemTexture_2D(int id, char* filename, file_extension ext) { unsigned char* bytes = stbi_load(filename, &widthImg, &heightImg, &numColCh, 0); if(bytes == 0) {fprintf(stderr, "ERROR : cannot load texture [%s]\n", filename); exit(1);} glGenTextures(1, &itemTexts[id]); - glActiveTexture(GL_TEXTURE0); + glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, itemTexts[id]); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); @@ -620,6 +623,7 @@ int main_alt() { // 32 max generate_itemTexture_2D(0, "res/white.png", PNG); + generate_itemTexture_2D(1, "res/sq_full.png", PNG); printf("-----------------------------------------------------------------------------------------------\n"); fflush(stdout); @@ -664,20 +668,25 @@ int main_alt() { glDeleteShader(vertexShaderR); glDeleteShader(fragmentShaderR); - // rectangle VAO/VBO - initMenus(); - unsigned int RVBO, RVAO; glGenVertexArrays(1, &RVAO); glGenBuffers(1, &RVBO); // bind the Vertex Array Object first, then bind and set vertex buffer(s), and then configure vertex attributes(s). glBindVertexArray(RVAO); + // rectangle VAO/VBO + initMenus(); + glBindBuffer(GL_ARRAY_BUFFER, RVBO); glBufferData(GL_ARRAY_BUFFER, sizeof(rectDefault), rectDefault, GL_STATIC_DRAW); - glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); + // position attribute + glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)0); glEnableVertexAttribArray(0); + + // texture coord attribute + glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 5 * sizeof(float), (void*)(3*sizeof(float))); + glEnableVertexAttribArray(1); // note that this is allowed, the call to glVertexAttribPointer registered VBO as the vertex attribute's bound vertex buffer object so afterwards we can safely unbind glBindBuffer(GL_ARRAY_BUFFER, 0); @@ -737,9 +746,8 @@ int main_alt() { generate_nearby_chunks(render_distance); fflush(stdout); - glUseProgram(shaderProgram); - // draw the map + glUseProgram(shaderProgram); glBindVertexArray(VAO); //printf("1\n"); fflush(stdout); @@ -754,6 +762,7 @@ int main_alt() { glUseProgram(shaderProgramR); glBindVertexArray(RVAO); + glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, itemTexts[0]); gl_drawInteger(shaderProgramR, (int)(1.0f/(real_T)), 0.0f, -0.92f, 0.05, 32, 255, 32, 0.005, -1); gl_drawInteger(shaderProgramR, triCount, 0.0f, 0.92f, 0.04f, 128, 128, 128, 0.005f, 1); diff --git a/src/menus.c b/src/menus.c index 3c5e33e..dd85280 100644 --- a/src/menus.c +++ b/src/menus.c @@ -19,7 +19,7 @@ #include "maeth.h" #include "menus.h" -float rectDefault[18] ; +float rectDefault[30] ; float incr; int creativeIntID; @@ -44,13 +44,13 @@ char* modString; static mat4 scale, slide; void initMenus() { - rectDefault[0] = -0.5f; rectDefault[1] = -0.5f; rectDefault[2] = -0.99f; - rectDefault[3] = -0.5f; rectDefault[4] = 0.5f; rectDefault[5] = -0.99f; - rectDefault[6] = 0.5f; rectDefault[7] = 0.5f; rectDefault[8] = -0.99f; + rectDefault[0] = -0.5f; rectDefault[1] = -0.5f; rectDefault[2] = -0.99f; rectDefault[3] = 0.0f; rectDefault[4] = 1.0f; + rectDefault[5] = -0.5f; rectDefault[6] = 0.5f; rectDefault[7] = -0.99f; rectDefault[8] = 0.0f; rectDefault[9] = 0.0f; + rectDefault[10] = 0.5f; rectDefault[11] = 0.5f; rectDefault[12] = -0.99f; rectDefault[13] = 1.0f; rectDefault[14] = 0.0f; - rectDefault[9] = -0.5f; rectDefault[10] = -0.5f; rectDefault[11] = -0.99f; - rectDefault[12] = 0.5f; rectDefault[13] = 0.5f; rectDefault[14] = -0.99f; - rectDefault[15] = 0.5f; rectDefault[16] = -0.5f; rectDefault[17] = -0.99f; + rectDefault[15] = -0.5f; rectDefault[16] = -0.5f; rectDefault[17] = -0.99f; rectDefault[18] = 0.0f; rectDefault[19] = 1.0f; + rectDefault[20] = 0.5f; rectDefault[21] = 0.5f; rectDefault[22] = -0.99f; rectDefault[23] = 1.0f; rectDefault[24] = 0.0f; + rectDefault[25] = 0.5f; rectDefault[26] = -0.5f; rectDefault[27] = -0.99f; rectDefault[28] = 1.0f; rectDefault[29] = 1.0f; incr = 0.0f; @@ -512,9 +512,10 @@ void display_button(int but_id, unsigned int fragShader) { } else { float size = minf(buttonList[but_id].h/2.3f, (buttonList[but_id].w)/(get_string_len(buttonList[but_id].text))); int retcol = mn_get_color(buttonList[but_id].red, buttonList[but_id].green, buttonList[but_id].blue); + glBindTexture(GL_TEXTURE_2D, itemTexts[1]); gl_drawRect(fragShader, buttonList[but_id].x, buttonList[but_id].y, buttonList[but_id].w, buttonList[but_id].h, buttonList[but_id].red, buttonList[but_id].green, buttonList[but_id].blue); + glBindTexture(GL_TEXTURE_2D, itemTexts[0]); gl_drawString(fragShader, buttonList[but_id].text, buttonList[but_id].x+buttonList[but_id].w/2.0f, buttonList[but_id].y+buttonList[but_id].h/2.0f, 0.7f*size, retcol, retcol, retcol, 0.7f*size/10.0f, 0); - } } diff --git a/src/structure.h b/src/structure.h index 5e0026f..9433484 100644 --- a/src/structure.h +++ b/src/structure.h @@ -160,7 +160,7 @@ extern int render_distance; // ---------------------------------------------------------------------------------------------------- // extern float vertices[180]; -extern float rectDefault[18]; +extern float rectDefault[30]; extern int triCount;