begin process at 2012 05 30 00:41:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

OpenGL

 > 

openGL3.3: probleme de texture


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

openGL3.3: probleme de texture

samedi 26 février 2011 à 17:05:21 | openGL3.3: probleme de texture

jngl

bonjour,

je suis entrain de développez un application C++ avec openGL3.3, SFML2(pour la fenêtrage) et openCTM pour charger les model3D.

je n'arrive pas a faire marcher les texture: lors du rendu le model est tout noir.

je suis sous ubuntu 64bit. vous pourrez trouvez le code entier ici.

voici le code qui charge les model:

VBO.h:

Code C/C++ :
#ifndef VBO_H
#define VBO_H
 
#include "tools.h"
#include "texture.h"
 
class VBO
{
	public:
		VBO(string file);
		~VBO();
		
		void draw();
	
	private:
		unsigned int m_vaoID;		// one vertex array objects, one for each drawn object
		unsigned int m_vboID[2];
		unsigned int m_vboColorID;
		unsigned int m_vbotexCoordID;
		Texture* tex;
		bool Color;
		unsigned int numTriangles;
 
};
 
#endif 
 


VBO.cpp:
Code C/C++ :
#include "vbo.h"
 
#define GL3_PROTOTYPES 1
#include <GL3/gl3.h>
#include <openctm.h>
#include <iostream>
 
VBO::VBO(string file):
tex(NULL),
Color(true)
{
	CTMimporter ctm;
	
	try
	{	
		ctm.Load(file.c_str());
    }
    catch (const ctm_error& error)
    {
		string msg=string("impposible de charger le fichier: ")+file;
		throw msg;
	}
	
	if(ctm.GetNamedAttribMap("Color") == CTM_NONE)
		Color=false;
	
 
	// one VAOs allocation
	glGenVertexArrays(1, &m_vaoID);
 
	// VAO setup
	glBindVertexArray(m_vaoID);
 
	glGenBuffers(2, m_vboID);
	
	glEnableVertexAttribArray(0);
	glBindBuffer(GL_ARRAY_BUFFER, m_vboID[0]);
	glBufferData(GL_ARRAY_BUFFER, ctm.GetInteger(CTM_VERTEX_COUNT)*3*sizeof(GLfloat), ctm.GetFloatArray(CTM_VERTICES), GL_STATIC_DRAW);
	glVertexAttribPointer((GLuint)0, 3, GL_FLOAT, GL_FALSE, 0, 0); 
 
	if(Color)
	{
		glEnableVertexAttribArray(1);
		glGenBuffers(1, &m_vboColorID);
		glBindBuffer(GL_ARRAY_BUFFER, m_vboID[2]);
		glBufferData(GL_ARRAY_BUFFER, ctm.GetInteger(CTM_VERTEX_COUNT)*4*sizeof(GLfloat), ctm.GetFloatArray(ctm.GetNamedAttribMap("Color")), GL_STATIC_DRAW);
		glVertexAttribPointer((GLuint)1, 4, GL_FLOAT, GL_FALSE, 0, 0);
	}
	
	//texture
	if(ctm.GetInteger(CTM_UV_MAP_COUNT) > 0)
	{
		tex = new Texture((string)ctm.GetUVMapString(CTM_UV_MAP_1, CTM_FILE_NAME));
		glGenBuffers(1, &m_vbotexCoordID);
		
		glEnableVertexAttribArray(2);
		
		glBindBuffer(GL_ARRAY_BUFFER, m_vbotexCoordID);
		glBufferData(GL_ARRAY_BUFFER, ctm.GetInteger(CTM_VERTEX_COUNT)*2*sizeof(GLfloat),ctm.GetFloatArray(CTM_UV_MAP_1), GL_STATIC_DRAW);
		glVertexAttribPointer((GLuint)2, 2, GL_FLOAT, GL_FALSE, 0, 0);
	}
	
	numTriangles=ctm.GetInteger(CTM_TRIANGLE_COUNT);
	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_vboID[1]);
	glBufferData(GL_ELEMENT_ARRAY_BUFFER, ctm.GetInteger(CTM_TRIANGLE_COUNT)*3*sizeof(uint), ctm.GetIntegerArray(CTM_INDICES), GL_STATIC_DRAW);
	glVertexAttribPointer((GLuint)3, 1, GL_UNSIGNED_INT, GL_FALSE, 0, 0);
 
	glBindVertexArray(0);
}
 
 
VBO::~VBO()
{
	glBindBuffer(GL_ARRAY_BUFFER, 0);
	glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
	glDeleteBuffers(2, m_vboID);
	glDeleteBuffers(1, &m_vboColorID);
	glBindVertexArray(0);
	glDeleteVertexArrays(1, &m_vaoID);
	if(tex)
		delete tex;
}
 
void VBO::draw()
{
	if(!Color)
		glVertexAttrib3f((GLuint)1, 1.0, 1.0, 1.0);
	glBindVertexArray(m_vaoID);
	if(tex)
		tex->bind();
	glDrawElements(GL_TRIANGLES, numTriangles*3, GL_UNSIGNED_INT, 0); 
	glBindVertexArray(0);
}
 


je suis désoler de mettre autant de code mais je n'est aucune idée d'où je me suis trompez

merci d'avance


Cette discussion est classée dans : buffer, array, gl, vbo, ctm


Répondre à ce message

Sujets en rapport avec ce message

openGL : scintillement [ par dletozeun ] bonjour,Je debute avec l'openGL en c++ et je n'utilise pas glut.En fait mon prog dessine des lignes blanches dans une fenetre mais les lignes ne s'afi effacement viewport [ par vladisback ] je réalise actuellement un logiciel de modelisation 3d, j'ai donc plusieurs viewports mais lorsque j'efface avec glClear(GL_COLOR_BUFFER_BIT | GL_DEPT OpenGL : les vertex buffer ca marche comment ? [ par eplanet ] Bonjour à tous, je voudrais me mettre aux vertex buffer pour optimiser un programme en openGL, seulement, lorsque j'écris la ligne :        glBindBuff OpenGL : modifier un vertex buffer ? [ par eplanet ] Bonsoir, je fais un petit jeu en openGL en utilisant les vertex buffer, et je voudrais pouvoir transformer au cours du temps les données contenues dan Frame Buffer OpenGL [ par roger000 ] <link rel="Fi Problème d'affichage, couleurs, faces visibles/cachées [ par Tibabou ] Bonjour/soir, Avec le code ci-dessous, j'obtiens une sphère "bizarre", j'ai le même problème avec des cubes, on voit le fond à certains endroits:<IMG Listes OpenGL : Problème de texture [ par smoove5198 ] Bonjour, Je travaille actuellement sur un projet en opengl. Pour des raisons de performence je me suis ecrit une classe qui crée du texte a partir d' TEXTURE SUR UNE SPHERE TOURNANTE [ par Batman60 ] bonsoirj'ai un problème de texture sur une spherela texture ne  tourne pas et ne prend pas la forme de la sphere ,mais la sphere tournevoic tableau [ par blueburry ] Bonjour, g besoin de retirer d'un buffer sBuf une chaine de caracteres ki vient juste apres le mot Subject: et avant le retour de chariot et de la pla caracteres chelous avec ReadFile() ???? [ par SnOOpss ] Salut j'ai un probleme tout con avec Readfile()                 HANDLE hdl;                 hdl=CreateFile(data3,GENERIC_RE


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales