I am starting with opengl and I already got it a lot…but still in problems…
lets go my questions…
1-How do I repeat a texture in a face?? for example…I made a square that is my floor with grass texture, but when i apply it it stretch the image and become very visible and large the pixels…how do i solve this??
2-This is simple curiosity…whats the diference between GLfloat and float? or GLint and int???and so on??
3-How is the best struct code of opengl?? explaining, where to put the drawing ( in a loop for example), where to create things… there is some tutorial explaining how to gain performance by structing the code organized??
thanx to all for the attention…
1: simply multiply your texture coordinates in both u and v to whatever times you want the repeat to be done. Ie: if u and v lie in [0…1] you have only the image, without repetition, if they lie into [0…10] you have 10 times the image in u direction and 10 times the image in the v direction. You can also do that with the texture matrix.
2: normally none (my header has typedef float GLfloat). I can’t ensure it will be the same everywhere.
Point 1.: As arts said multiple your tex coords with some number (you will see) for example 10. And also make sure GL_REPEAT is set in the texture parameter section (where you load your texture).
Point 2.: Depends on the implementation, i personally try to use GLfloat everywhere and typdef it with my own names as arts does:
typedef myFloat GLfloat;
Hard question, too general
I think its better to buy a book OpenGL Super Bible for example and check out their sample codes along with it. Even after that there will be questions … so i do also waiting for somebody to shed light on it.
So, if i understand i have to set the parameter like this…
glTexParameter(GL_TEXTURE_2D, GL_WRAP_W, GL_REPEAT); // i dont remember if these are the right words…but i get it…
then in my primitive i do this…
glTexCoord2d(10.0, 10.0); glVertex3f(1.0f, 1.0f, 0.0f);
glTexCoord2d(0.0, 10.0); glVertex3f(-1.0f, 1.0f, 0.0f);
glTexCoord2d(0.0, 0.0); glVertex3f(-1.0f, -1.0f, 0.0f);
glTexCoord2d(10.0, 0.0); glVertex3f(1.0f, -1.0f, 0.0f);
2- in general i use GLfloat…
3- I will check some samples and study the code…
Yes, and also let me point you to a sample of how GL_REPEAT should be used when you load the grass texture:
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_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_width, m_height, 0,
GL_BGR_EXT, GL_UNSIGNED_BYTE, m_image);