Ambient lightning + Multitexture (Les shaders ne se superposent pas)

This commit is contained in:
GolfOcean334
2024-03-27 11:19:34 +01:00
parent 35876a05a5
commit 6f08684972
18 changed files with 675 additions and 63 deletions

View File

@@ -5,7 +5,7 @@ ModelClass::ModelClass()
{
m_vertexBuffer = 0;
m_indexBuffer = 0;
m_Texture = 0;
m_Textures = 0;
m_model = 0;
}
@@ -19,7 +19,7 @@ ModelClass::~ModelClass()
{
}
bool ModelClass::Initialize(ID3D11Device* device, ID3D11DeviceContext* deviceContext, char* modelFilename, char* textureFilename)
bool ModelClass::Initialize(ID3D11Device* device, ID3D11DeviceContext* deviceContext, char* modelFilename, char* textureFilename1, char* textureFilename2)
{
bool result;
@@ -36,8 +36,8 @@ bool ModelClass::Initialize(ID3D11Device* device, ID3D11DeviceContext* deviceCon
{
return false;
}
// Load the texture for this model.
result = LoadTexture(device, deviceContext, textureFilename);
// Load the textures for this model.
result = LoadTextures(device, deviceContext, textureFilename1, textureFilename2);
if (!result)
{
return false;
@@ -49,8 +49,8 @@ bool ModelClass::Initialize(ID3D11Device* device, ID3D11DeviceContext* deviceCon
void ModelClass::Shutdown()
{
// Release the model texture.
ReleaseTexture();
// Release the model textures.
ReleaseTextures();
// Shutdown the vertex and index buffers.
ShutdownBuffers();
@@ -76,9 +76,9 @@ int ModelClass::GetIndexCount()
return m_indexCount;
}
ID3D11ShaderResourceView* ModelClass::GetTexture()
ID3D11ShaderResourceView* ModelClass::GetTexture(int index)
{
return m_Texture->GetTexture();
return m_Textures[index].GetTexture();
}
@@ -225,15 +225,21 @@ void ModelClass::RenderBuffers(ID3D11DeviceContext* deviceContext)
return;
}
bool ModelClass::LoadTexture(ID3D11Device* device, ID3D11DeviceContext* deviceContext, char* filename)
bool ModelClass::LoadTextures(ID3D11Device* device, ID3D11DeviceContext* deviceContext, char* filename1, char* filename2)
{
bool result;
// Create and initialize the texture object.
m_Texture = new TextureClass;
// Create and initialize the texture object array.
m_Textures = new TextureClass[2];
result = m_Texture->Initialize(device, deviceContext, filename);
result = m_Textures[0].Initialize(device, deviceContext, filename1);
if (!result)
{
return false;
}
result = m_Textures[1].Initialize(device, deviceContext, filename2);
if (!result)
{
return false;
@@ -242,14 +248,16 @@ bool ModelClass::LoadTexture(ID3D11Device* device, ID3D11DeviceContext* deviceCo
return true;
}
void ModelClass::ReleaseTexture()
void ModelClass::ReleaseTextures()
{
// Release the texture object.
if (m_Texture)
// Release the texture object array.
if (m_Textures)
{
m_Texture->Shutdown();
delete m_Texture;
m_Texture = 0;
m_Textures[0].Shutdown();
m_Textures[1].Shutdown();
delete[] m_Textures;
m_Textures = 0;
}
return;