well, I haven't set up any uniform for the texture unit, so that is my problem.
can you tell me how.
here is my setup code:
aspect = (GLfloat)screen_width / (GLfloat)screen_height;
glClearColor(0.1f, 0.1f, 0.2f, 1.0f);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
float vertices[] = {
//X Y Z R G B UV X UV Y
-0.5f, 0.5f, -0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f,
0.5f, -0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,
-0.5f, -0.5f, -0.5f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f,
-0.5f, 0.5f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
0.5f, 0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f,
0.5f, -0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 1.0f, 1.0f,
-0.5f, -0.5f, 0.5f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f
};
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
GLuint elements[] = {
3, 2, 1,
1, 0, 3,
7, 6, 5,
5, 4, 7,
4, 0, 3,
3, 7, 4,
5, 1, 2,
2, 6, 5,
3, 2, 6,
6, 7, 3,
0, 1, 5,
5, 4, 0
};
glGenBuffers(1, &ebo);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(elements), elements, GL_STATIC_DRAW);
vertexShader = new Shader("defaultVert.glsl", GL_VERTEX_SHADER);
fragmentShader = new Shader("defaultFrag.glsl", GL_FRAGMENT_SHADER);
shaderProg = new ShaderProgram();
shaderProg->attachShader(vertexShader);
shaderProg->attachShader(fragmentShader);
shaderProg->bindFragDataLocation(0, "fragColor");
shaderProg->link();
shaderProg->Use();
positionLoc = shaderProg->getAttribLoc("vPosition");
glEnableVertexAttribArray(positionLoc);
glVertexAttribPointer(positionLoc, 3, GL_FLOAT, GL_FALSE, 8*sizeof(float), 0);
colorLoc = shaderProg->getAttribLoc("color");
glEnableVertexAttribArray(colorLoc);
glVertexAttribPointer(colorLoc, 3, GL_FLOAT, GL_FALSE, 8*sizeof(float), (void*)(3*sizeof(float)));
texLoc = shaderProg->getAttribLoc("texCoord");
glEnableVertexAttribArray(texLoc);
glVertexAttribPointer(texLoc, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)(6 * sizeof(float)));
int width, height;
FIBITMAP* bitmap = FreeImage_Load(FreeImage_GetFileType("assets/textures/basic_tile.png", 0), "assets/textures/basic_tile.png");
FIBITMAP *img = FreeImage_ConvertTo32Bits(bitmap);
width = FreeImage_GetWidth(img);
height = FreeImage_GetHeight(img);
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8,
width, height, 0, GL_RGBA,
GL_UNSIGNED_BYTE, (void*)FreeImage_GetBits(img));
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glGenerateMipmap(GL_TEXTURE_2D);
FreeImage_Unload(bitmap);
FreeImage_Unload(img);