Historique des modifications - Message

Message #7981

Sujet: Environement 3D


Type Date Auteur Contenu
Dernière modification 18-02-2010 15:01:47 Ilovechocolat
J'ai créé le qual (avec un scene node personnalisé, mais ça marche pas (damnation), j'utilise ce que tu m'a dit mais la qual est trop petit).
Bon maintenant je m'adresse au connaisseur de GLSL, comment je récupère les textures ?

[EDIT]étrangement mon qual ne supporte pas les textures, voici son code :

Code c++ :

class QuadSceneNode : public irr::scene::ISceneNode 
{
public :
	QuadSceneNode(irr::scene::ISceneNode* parent, irr::scene::ISceneManager* mgr,
	irr::s32 id = -1, irr::core::rectf size = irr::core::rectf(-1,-1,1,1))
	: irr::scene::ISceneNode(parent, mgr, id)
	{
		m_material.Wireframe = false;
		m_material.Lighting = false;

		irr::core::position2df position(size.getCenter().X - (size.getSize()/2).Width, size.getCenter().Y - (size.getSize()/2).Height);
		m_box = irr::core::aabbox3d<irr::f32>(position.X, position.Y, 0, position.X + size.getWidth(), position.Y + size.getHeight(), 0);

		m_vertices[0] = irr::video::S3DVertex(position.X, position.Y + size.getHeight(),0,0,0,0,  irr::video::SColor(0,0,0,0), 0, 0);
		m_vertices[1] = irr::video::S3DVertex(position.X + size.getWidth(), position.Y + size.getHeight(),0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
		m_vertices[2] = irr::video::S3DVertex(position.X, position.Y,0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
		m_vertices[3] = irr::video::S3DVertex(position.X + size.getWidth(), position.Y,0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
		m_material.BackfaceCulling = false;
	}
	virtual void OnRegisterSceneNode()
	{
		if(IsVisible)
			SceneManager->registerNodeForRendering(this, irr::scene::ESNRP_SOLID);

		ISceneNode::OnRegisterSceneNode();
	}
	void render()
	{
		irr::video::IVideoDriver* driver = SceneManager->getVideoDriver();

		driver->setTransform(irr::video::ETS_WORLD, AbsoluteTransformation);

		/*if (DebugDataVisible & scene::EDS_HALF_TRANSPARENCY)
			mat.MaterialType = video::EMT_TRANSPARENT_ADD_COLOR;
		else
			driver->setMaterial(Mesh->getMeshBuffer(0)->getMaterial());
		driver->setMaterial(mat);*/
		driver->setMaterial(m_material);

		irr::u16 indices[] = {0,1,2, 1,2,3};
		driver->drawIndexedTriangleList(&m_vertices[0], 4, &indices[0], 2);
		driver->draw3DBox(m_box, irr::video::SColor(255, 255, 255, 255));

		driver->setTransform(irr::video::ETS_WORLD, AbsoluteTransformation);
	}
	const irr::core::aabbox3d<irr::f32>& getBoundingBox() const
	{
		return m_box;
	}
	irr::u32 getMaterialCount() const
	{
		return 1;
	}
	irr::video::SMaterial& getMaterial(irr::u32 i)
	{
		return m_material;
	}
private :
	irr::core::aabbox3d<irr::f32> m_box;
	irr::video::SMaterial m_material;
	irr::video::S3DVertex m_vertices[4];
};
Création du message 17-02-2010 21:56:36 Ilovechocolat
J'ai créé le qual (avec un scene node personnalisé, mais ça marche pas (damnation), j'utilise ce que tu m'a dit mais la qual est trop petit).
Bon maintenant je m'adresse au connaisseur de GLSL, comment je récupère les textures ?

[EDIT]étrangement mon qual ne supporte pas les textures, voici son code :

Code c++ :

class QuadSceneNode : public irr::scene::ISceneNode 
{
public :
	QuadSceneNode(irr::scene::ISceneNode* parent, irr::scene::ISceneManager* mgr,
	irr::s32 id = -1, irr::core::rectf size = irr::core::rectf(-1,-1,1,1))
	: irr::scene::ISceneNode(parent, mgr, id)
	{
		m_material.Wireframe = false;
		m_material.Lighting = false;

		irr::core::position2df position(size.getCenter().X - (size.getSize()/2).Width, size.getCenter().Y - (size.getSize()/2).Height);
		m_box = irr::core::aabbox3d<irr::f32>(position.X, position.Y, 0, position.X + size.getWidth(), position.Y + size.getHeight(), 0);

		m_vertices[0] = irr::video::S3DVertex(position.X, position.Y + size.getHeight(),0,0,0,0,  irr::video::SColor(0,0,0,0), 0, 0);
		m_vertices[1] = irr::video::S3DVertex(position.X + size.getWidth(), position.Y + size.getHeight(),0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
		m_vertices[2] = irr::video::S3DVertex(position.X, position.Y,0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
		m_vertices[3] = irr::video::S3DVertex(position.X + size.getWidth(), position.Y,0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
		m_material.BackfaceCulling = false;
	}
	virtual void OnRegisterSceneNode()
	{
		if(IsVisible)
			SceneManager->registerNodeForRendering(this, irr::scene::ESNRP_SOLID);

		ISceneNode::OnRegisterSceneNode();
	}
	void render()
	{
		irr::video::IVideoDriver* driver = SceneManager->getVideoDriver();

		driver->setTransform(irr::video::ETS_WORLD, AbsoluteTransformation);

		/*if (DebugDataVisible & scene::EDS_HALF_TRANSPARENCY)
			mat.MaterialType = video::EMT_TRANSPARENT_ADD_COLOR;
		else
			driver->setMaterial(Mesh->getMeshBuffer(0)->getMaterial());
		driver->setMaterial(mat);*/
		driver->setMaterial(m_material);

		irr::u16 indices[] = {0,1,2, 1,2,3};
		driver->drawIndexedTriangleList(&m_vertices[0], 4, &indices[0], 2);
		driver->draw3DBox(m_box, irr::video::SColor(255, 255, 255, 255));

		driver->setTransform(irr::video::ETS_WORLD, AbsoluteTransformation);
	}
	const irr::core::aabbox3d<irr::f32>& getBoundingBox() const
	{
		return m_box;
	}
	irr::u32 getMaterialCount() const
	{
		return 1;
	}
	irr::video::SMaterial& getMaterial(irr::u32 i)
	{
		return m_material;
	}
private :
	irr::core::aabbox3d<irr::f32> m_box;
	irr::video::SMaterial m_material;
	irr::video::S3DVertex m_vertices[4];
};

Retour

Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
104 invités en ligne
membre en ligne: -
RSS Feed