How set texture, on my model. I use this
glBindTexture(GL_TEXTURE_2D, textures[i]);
How set texture, on my model. I use this
glBindTexture(GL_TEXTURE_2D, textures[i]);
hi,
basicly what you are doing MAY be right … but a lot of code is needed additionally to this to really use a texture…
can you show your code ?
does your model has Texture coordinates ?
regrads
uwi2k2
#include <windows.h> // Standardno windows zaglavlje
#include <GL/GL.h> // Microsoft OpenGL verzija 1.1
#include <GL/glu.h> // OpenGL Utilities
#include <GL/glut.h> // GLUT
#include <math.h> // matematicke funkcije
#include "model.h" // za rad sa modelom
#include "Proracun_Normala.h"
#include <FreeImage.h>
// kompajlerska direktiva koja ne prikazuje konzolni prozor
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
// Uglovi rotacije
GLfloat g_rotationX = 0.0f;
GLfloat g_rotationY = 0.0f;
// Glu objekat
GLUquadricObj* g_gluObj = NULL;
Model* g_model = NULL;
// Identifikatori tekstura i putanje do odgovarajucih slika
typedef enum { TEXTURE_DRVO = 0, TEXTURE_METAL, TEXTURE_ZID, TEXTURE_GLASS, TEXTURE_TRAVA,TEXTURE_GRASS, TEXTURE_CRAN, TEXTURE_RUBBER, TEXTURE_GROUND, TEXTURE_COUNT } TTextures;
GLuint textures[TEXTURE_COUNT];
const char* textureFiles[TEXTURE_COUNT] = { "drvo.jpg", "metal.jpg", "zid.jpg", "glass.jpg", "trava.jpg" ,"grass.jpg", "cran.jpg", "rubber.jpg", "ground.jpg"};
// Prototipovi funkcija
void RenderScene(void);
void SetupRenderingContext();
void SpecialKeys(int key, int x, int y);
void ChangeSize(int w, int h);
void DrawWheel();
void Shutdown();
//////////////////////////////////////////////////////////////////////
// Naziv: main
// Namena: main funkcija
// Parametri: argc, argv
// Povratna vrednost: int
//////////////////////////////////////////////////////////////////////
int main(int argc, char *argv[])
{
// TODO 1: Kreirati prozor dimenzija 640x480 koji podrzava rad sa dablbafering i testiranje dubine
// Naslov prozora treba da bude: Dizalica
// Za iscrtavanje scene koristiti RenderScene funkciju, za izmenu dimenzija ChangeSize,
// za inicijalizaciju SetupRenderingContext, za oslobadanje resursa funkciju Shutdown
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH); // Podrzava rad sa dablbafering i testiranje dubine
glutInitWindowSize(640, 480); // Prozor dimenzija 640x480
glutCreateWindow("Dizalica"); // Naslov prozora " Dizalica"
glutDisplayFunc(RenderScene); // Iscrtavanje scene
glutReshapeFunc(ChangeSize); // Izmena dimenzije prozora
glutSpecialFunc(SpecialKeys); // Pomeranje pomocu tastera
SetupRenderingContext(); // Inicijalizacija
glutMainLoop();// Pokretanje glavne petlje
Shutdown(); // Oslobadjanje resursa
return 0;
}
FIBITMAP* LoadImageFromFile(const char* filename)
{
// odredi format slike
FREE_IMAGE_FORMAT fifmt = FreeImage_GetFileType(filename, 0);
// ucitaj sliku
FIBITMAP *dib = FreeImage_Load(fifmt, filename, 0);
return dib;
}
//////////////////////////////////////////////////////////////////////
// Naziv: DrawWheel
// Namena: funkcija iscrtava tocak
//////////////////////////////////////////////////////////////////////
void DrawWheel()
{
// Tocak kao valjak i felna kao disk
glPushMatrix();
// TODO 2: Nacrtati tocak kao valjak poluprecnika 0.3 i visine 0.2, koristiti g_gluObj promenljivu
gluCylinder(g_gluObj, 0.3, 0.3, 0.2, 64, 64);
// TODO 2: Nacrtati felnu kao krug poluprecnika 0.3 na dubini od 0.2 jedinice po z-osi, koristiti g_gluObj promenljivu
glTranslated(0, 0, 0.2); //translacija po z-osi
gluDisk(g_gluObj,0.0,0.3,64,64);
glPopMatrix();
}
//////////////////////////////////////////////////////////////////////
// Naziv: RenderScene
// Namena: funkcija iscrtava OpenGL scenu
//////////////////////////////////////////////////////////////////////
void RenderScene(void)
{
// Obrisi sadrzaj kolor i depth bafera
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Sacuvaj stanje modelview matrice i primeni transformacije
glPushMatrix();
// Primeni transformacije
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_RUBBER]);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glNormal3f(1.0f, 1.0f, 1.0f);
glTranslated(0.0, -0.7, -10.0);
glRotatef(g_rotationX, 1.0f, 0.0f, 0.0f);
glRotatef(g_rotationY, 0.0f, 1.0f, 0.0f);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
// Podloga
glColor3ub(0, 255, 0);
glPushMatrix();
// TODO 2: Nacrtati podlogu koriscenjem GL_QUADS primitive
// temena su (u pravilnom redosledu):
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_GROUND]);
glColor3ub(255, 255, 255);
glBegin(GL_QUADS);
glNormal3f(0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3d(18.0f, -0.9f, -18.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3d(-18.0f, -0.9f, -18.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3d(-18.0f, -0.9f, 18.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3d(18.0f, -0.9f, 18.0f);
glEnd();
glPopMatrix();
// Tockovi
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_RUBBER]);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glNormal3f(1.0f, 1.0f, 1.0f);
glColor3ub(255, 255,255);
glPushMatrix();
// TODO 2: Nacrtati tockove koriscenjem DL mehanizma:
// tocak 1 na poziciji (-2, -0.55, 1.0)
glTranslatef(-2, -0.60, 1.0);
DrawWheel();
// tocak 2 na poziciji (-1.2, -0.55, 1.0)
glTranslatef(4, -0.04, -0.08);
DrawWheel();
//// tocak 3 na poziciji (1.6, -0.55, 1.0)
glTranslatef(-3.0, 0.09, -0.01);
DrawWheel();
//// tocak 4 na poziciji (1.6, -0.55, -1.0)
glRotatef(180,0.0,1.0,0.0);
glTranslatef(1.0, -0.05, 1.9);
DrawWheel();
//// tocak 5 na poziciji (-1.2, -0.55, -1.0)
glTranslatef(-1.0, -0.05, -0.05);
DrawWheel();
//// tocak 6 na poziciji (-2, -0.55, -1.0)
glTranslatef(-2.95, -0.05, -0.05);
DrawWheel();
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glPopMatrix();
// Osnova tela dizalice
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_CRAN]);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glColor3ub(255, 255, 255);
glPushMatrix();
glTranslatef(-1.55f, -0.35f, 0.0f);
glScaled(2.4f, 0.6f, 2.0f);
glutSolidCube(1.0);
glPopMatrix();
glColor3ub(255, 255, 255);
glPushMatrix();
glTranslatef(0.3f, -0.35f, 0.0f);
glScaled(1.4f, 0.4f, 1.7f);
glutSolidCube(1.0);
glPopMatrix();
glColor3ub(255, 255, 255);
glPushMatrix();
glTranslatef(1.65f, -0.35f, 0.0f);
glScaled(1.5f, 0.6f, 2.0f);
glutSolidCube(1.0);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glPopMatrix();
// Nosac dizalice
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_CRAN]);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glColor3ub(255, 255, 255);
glPushMatrix();
glTranslatef(-1.55f, 0.25f, 0.0f);
glScaled(2.0f, 0.6f, 1.8f);
glutSolidCube(1.0);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glPopMatrix();
// Kran dizalice
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_CRAN]);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glColor3ub(255, 255, 255);
glPushMatrix();
glTranslatef(-1.6f, 0.65f, -0.8f);
// Osnova krana dizalice (valjak)
// TODO 2: Nacrtati valjak poluprecnika 0.6 i visine 0.5, koristiti g_gluObj promenljivu
gluCylinder(g_gluObj, 0.6, 0.6, 0.5, 64, 64);
glFrontFace(GL_CW);
// TODO 2: Nacrtati krug poluprecnika 0.6, koristiti g_gluObj promenljivu
gluDisk(g_gluObj,0.0,0.6,64,64);
glFrontFace(GL_CCW);
// TODO 2: Nacrtati krug poluprecnika 0.6 na dubini od 0.5 po z-osi, koristiti g_gluObj promenljivu
glTranslated(0, 0, 0.5); //translacija po z-osi
gluDisk(g_gluObj,0.0,0.6,64,64);
// Spoljni kran
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_CRAN]);
glColor3ub(255, 255, 255);
glPushMatrix();
// TODO 2: Nacrtati spoljni kran kao kvadar sirine 3.2, visine 0.5 i dubine 0.4 na poziciji (1.6, 0.2, -0.2)
glTranslatef(1.6,0.2,-0.2);
glScaled(3.2f, 0.5f, 0.4f);
glutSolidCube(1.0);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glPopMatrix();
// Unutrasnji kran (extensor)
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_ZID]);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glColor3ub(255, 255, 255);
glPushMatrix();
// TODO 2: Nacrtati unutrasnji kran kao kvadar sirine 3.2, visine 0.35 i dubine 0.28 na poziciji (3.2, 0.2, -0.2)
glNormal3f(1.0, 1.0, 1.0);
glTranslatef(3.2, 0.2, -0.2);
glScaled(3.2, 0.35, 0.28);
glutSolidCube(1);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glPopMatrix();
// Kuka
glColor3ub(255, 0, 0);
glPushMatrix();
// TODO 2: Translirati za (4.5, -0.2, -0.25), zatim skalirati 0.6 puta po x i y osama, zatim rotirati -90 stepeni oko x-ose
glTranslated(4.5, -0.2, -0.25);
glScaled(0.6, 0.6, 0);
glRotated(-90, 1, 0, 0);
gluCylinder(g_gluObj, 0.05, 0.05, 0.5, 64, 64);
// TODO 2: Translirati za (-0.15, 0, -0.15), zatim rotirati 45 stepeni oko y-ose
glTranslated(-0.15, 0, -0.15);
glRotated(45, 0, 1, 0);
gluCylinder(g_gluObj, 0.05, 0.05, 0.25, 64, 64);
// TODO 2: Translirati za (-0.05, 0, 0), zatim rotirati 100 stepeni oko y-ose
glTranslated(-0.05, 0, 0);
glRotated(100, 0, 1, 0);
gluCylinder(g_gluObj, 0.05, 0.05, 0.3, 64, 64);
// TODO 2: Translirati za (-0.35, 0, 0.35), zatim rotirati 90 stepeni oko y-ose
glTranslated(-0.35, 0, 0.35);
glRotated(90, 0, 1, 0);
gluCylinder(g_gluObj, 0.05, 0.05, 0.4, 64, 64);
glPopMatrix();
glPopMatrix();
// Kabina dizalice
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_GLASS]);
glColor3ub(255, 255, 255);
glPushMatrix();
glTranslatef(-2.0f, 0.55f, 0.8f);
// TODO 2: Nacrtati kabinu koriscenjem GL_QUADS primitive
// temena su (u pravilnom redosledu): (0.1f, 1.0f, 0.0f), (0.0f, 0.0f, 0.0f), (1.2f, 0.0f, 0.0f), (0.9f, 1.0f, 0.0f),
// (1.2f, 0.0f, 0.0f), (1.2f, 0.0f, -0.6f), (0.9f, 1.0f, -0.6f), (0.9f, 1.0f, 0.0f),
// (0.9f, 1.0f, -0.6f), (1.2f, 0.0f, -0.6f), (0.0f, 0.0f, -0.6f), (0.1f, 1.0f, -0.6f),
// (0.1f, 1.0f, -0.6f), (0.0f, 0.0f, -0.6f), (0.0f, 0.0f, 0.0f), (0.1f, 1.0f, 0.0f),
// (0.1f, 1.0f, -0.6f), (0.1f, 1.0f, 0.0f), (0.9f, 1.0f, 0.0f), (0.9f, 1.0f, -0.6f).
glBegin(GL_QUADS);
glNormal3f(0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3d(0.1f, 1.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3d(0.0f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3d(1.2f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3d(0.9f, 1.0f, 0.0f);
glEnd();
glBegin(GL_QUADS);
glNormal3f(0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3d(1.2f, 0.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3d(1.2f, 0.0f, -0.6f);
glTexCoord2f(1.0f, 0.0f);
glVertex3d(0.9f, 1.0f, -0.6f);
glTexCoord2f(0.0f, 0.0f);
glVertex3d(0.9f, 1.0f, 0.0f);
glEnd();
glBegin(GL_QUADS);
glNormal3f(0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3d(0.9f, 1.0f, -0.6f);
glTexCoord2f(1.0f, 1.0f);
glVertex3d(1.2f, 0.0f, -0.6f);
glTexCoord2f(1.0f, 0.0f);
glVertex3d(0.0f, 0.0f, -0.6f);
glTexCoord2f(0.0f, 0.0f);
glVertex3d(0.1f, 1.0f, -0.6f);
glEnd();
glBegin(GL_QUADS);
glNormal3f(0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3d(0.1f, 1.0f, -0.6f);
glTexCoord2f(1.0f, 1.0f);
glVertex3d(0.0f, 0.0f, -0.6f);
glTexCoord2f(1.0f, 0.0f);
glVertex3d(0.0f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3d(0.1f, 1.0f, 0.0f);
glEnd();
glBegin(GL_QUADS);
glNormal3f(0.0f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3d(0.1f, 1.0f, -0.6f);
glTexCoord2f(1.0f, 1.0f);
glVertex3d(0.1f, 1.0f, 0.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3d(0.9f, 1.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3d(0.9f, 1.0f, -0.6f);
glEnd();
glPopMatrix();
// Kabina vozila
glPushMatrix();
glBindTexture(GL_TEXTURE_2D, textures[TEXTURE_GLASS]);
glBegin(GL_QUADS);
glNormal3f(1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(1.2f, 0.9f, 1.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(1.2f, -0.1f, 1.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(2.4f, -0.1f, 1.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(2.1f, 0.9f, 1.0f);
glEnd();
glBegin(GL_QUADS);
glNormal3f(1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(2.4f, -0.1f, 1.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(2.4f, -0.1f, 0.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(2.1f, 0.9f, 0.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(2.1f, 0.9f, 1.0f);
glEnd();
glBegin(GL_QUADS);
glNormal3f(1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(2.1f, 0.9f, 0.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(2.4f, -0.1f, 0.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(1.2f, -0.1f, 0.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(1.2f, 0.9f, 0.0f);
glEnd();
glBegin(GL_QUADS);
glNormal3f(1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(1.2f, 0.9f, 0.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(1.2f, -0.1f, 0.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(1.2f, -0.1f, 1.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(1.2f, 0.9f, 1.0f);
glEnd();
glBegin(GL_QUADS);
glNormal3f(1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(1.2f, 0.9f, 0.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(1.2f, 0.9f, 1.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(2.1f, 0.9f, 1.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(2.1f, 0.9f, 0.0f);
glEnd();
glPopMatrix();
// Zgrada u izgradnji (skela)
glPushMatrix();
// TODO 3: Pozicionirati, skalirati i prikazati ucitani model zgrade u izgradnji (sa skelom) desno od dizalice (po x-osi).
glTranslatef(0.0f, 2.0f, -8.0f);
glRotatef(270,0.0,1.0,0.0);
glScalef(10.0, 10.0, 10.0);
DrawModel(g_model);
glPopMatrix();
// Restauriraj modelview matricu
glPopMatrix();
glutSwapBuffers();
}
//////////////////////////////////////////////////////////////////////
// Naziv: ChangeSize
// Namena: funkcija obradjuje promenu velicine prozora
// Parametri: nove dimenzije prozora
//////////////////////////////////////////////////////////////////////
void ChangeSize(int w, int h)
{ // Pozicija svetla iznad dizalice - ljubicaste boje
static GLfloat lightPos[] = {82.0f, 125.0f, -125.0f, 1.0f };
glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
// TODO 1: Definisati viewport preko celog prozora
glViewport(0, 0, w, h);
// TODO 1: Definisati projekciju u perspektivi sa fov = 75.0, near = 1.0 i far = 20.0
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(75.0, (GLdouble)w/h, 1.0, 20.0);
glLightfv(GL_LIGHT0, GL_POSITION, lightPos);
}
//////////////////////////////////////////////////////////////////////
// Naziv: SetupRenderingContext
// Namena: funkcija vrsi potrebne inicijalizacije pre pocetka
// GLUT petlje
//////////////////////////////////////////////////////////////////////
void SetupRenderingContext()
{
// Boja osvetljenja
GLfloat ambient[] = { 0.0f, 0.0f, 0.0f, 1.0f };
GLfloat diffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat specular[] = { 1.0f, 0.39f, 1.0f, 0.99f };
GLfloat smer[] = { 0.0f, 0.0f, 1.0f };
//GLfloat ambient[] = { 1.0f, 0.11f, 0.0f, 0.78f };
// GLfloat diffuse[] = { 0.37f, 0.0f, 0.43f, 0.99f };
// GLfloat specular[] = { 1.0f, 0.39f, 1.0f, 0.99f };
//
FIBITMAP* image = 0; // promenljiva u koju ucitavamo sadrzaj slike
int i;
glClearColor(0.0f, 0.0f, 1.2588f, 2.0f); // teget boja
// Ukljuci depth testing
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glFrontFace(GL_CW);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
// Reflektorski svetlosni izvor
glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,smer);
glLightf(GL_LIGHT0,GL_SPOT_CUTOFF, 50.0f);
glEnable(GL_LIGHT0);
//glEnable(GL_NORMALIZE); // automatska normalizacija
glEnable(GL_TEXTURE_2D);
// Ukljuci i podesi color tracking
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
// Ukljuci automatsku normalizaciju nad normalama
glEnable(GL_NORMALIZE);
// Ucitaj slike i kreiraj teksture
glGenTextures(TEXTURE_COUNT, textures);
for (i = 0; i < TEXTURE_COUNT; ++i)
{
// Pridruzi teksturu odgovarajucem identifikatoru
glBindTexture(GL_TEXTURE_2D, textures[i]);
// TODO 1: Ucitaj sliku i podesi parametre teksture
image = LoadImageFromFile(textureFiles[i]);
if (image != 0)
{
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, FreeImage_GetWidth(image),
FreeImage_GetHeight(image), GL_BGR_EXT,
GL_UNSIGNED_BYTE, FreeImage_GetBits(image));
// TODO 1: Podesiti texture filtre: max = linear, min=linear_mipmap_linear,
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
FreeImage_Unload(image);
}
};
// Ukljuci generisanje koord. teksture
// TODO 1: Ukljuciti depth testing, back face culling
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
// TODO 1: Kreirati novi GLU objekat u promenljivu g_gluObj.
g_gluObj = gluNewQuadric();
gluQuadricNormals(g_gluObj, GLU_SMOOTH);
// TODO 3: Ucitati model zgrade u izgradnji (skele)
glPushMatrix();
g_model = LoadModel("Zgrada.obj",GL_TRUE, GL_TRUE);
// Ukljuci svetlosni izvor
glEnable(GL_LIGHT0);
glEnable(GL_LIGHTING);
glPopMatrix();
}
//////////////////////////////////////////////////////////////////////
// Naziv: Shutdown
// Namena: oslobadjanje resursa
//////////////////////////////////////////////////////////////////////
void Shutdown()
{
// TODO 1: Osloboditi alocirane resurse
gluDeleteQuadric(g_gluObj);
UnloadModel(g_model);
// Oslobodi teksture
glDeleteTextures(TEXTURE_COUNT, textures);
}
//////////////////////////////////////////////////////////////////////
// Naziv: SpecialKeys
// Namena: obrada specijalnih karaktera
// Parametri: key, x i y
//////////////////////////////////////////////////////////////////////
void SpecialKeys(int key, int x, int y)
{
switch (key)
{
case GLUT_KEY_UP:
g_rotationX -= 5.0f;
break;
case GLUT_KEY_DOWN:
g_rotationX += 5.0f;
break;
case GLUT_KEY_LEFT:
g_rotationY -= 5.0f;
break;
case GLUT_KEY_RIGHT:
g_rotationY += 5.0f;
};
glutPostRedisplay();
}
This my code, but i not see texture on my input model Can you help me ?