read msh in,
handle non UVed msh, next test UVed msh + dynamical switch between UVed/not UVed
This commit is contained in:
parent
e583c361ec
commit
c3d73895c7
|
@ -34,6 +34,7 @@ Object::Object(const char* path)
|
||||||
if (!strcmp("MODL", (*it)->name))
|
if (!strcmp("MODL", (*it)->name))
|
||||||
{
|
{
|
||||||
Modl* tempModl = new Modl;
|
Modl* tempModl = new Modl;
|
||||||
|
setModlDefault(tempModl);
|
||||||
|
|
||||||
// get all subchunks
|
// get all subchunks
|
||||||
std::list<ChunkHeader*> tempChunks;
|
std::list<ChunkHeader*> tempChunks;
|
||||||
|
@ -342,9 +343,9 @@ void Object::analyseSegmChunks(Modl * dataDestination, std::list<ChunkHeader*>&
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::cout << "vertices" << std::endl;
|
std::cout << "triangles: " << dataDestination->meshSize << std::endl;
|
||||||
for (int i = 0; i < dataDestination->meshSize; i += 3)
|
for (int i = 0; i < dataDestination->meshSize; i += 3)
|
||||||
std::cout << dataDestination->mesh[i] << " - " << dataDestination->mesh[i + 1] << " - " << dataDestination->mesh[i + 2] << std::endl;
|
std::cout << dataDestination->mesh[i] << " <> " << dataDestination->mesh[i + 1] << " <> " << dataDestination->mesh[i + 2] << std::endl;
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
@ -414,12 +415,18 @@ void Object::readVertex(Modl* dataDestination, std::streampos position)
|
||||||
|
|
||||||
dataDestination->vertex = new float[tempSize * 3];
|
dataDestination->vertex = new float[tempSize * 3];
|
||||||
|
|
||||||
for (unsigned int i = 0; i < tempSize; i += 3)
|
for (unsigned int i = 0; i < tempSize * 3; i += 3)
|
||||||
{
|
{
|
||||||
fsMesh.read(reinterpret_cast<char*>(&dataDestination->vertex[i]), sizeof(float));
|
fsMesh.read(reinterpret_cast<char*>(&dataDestination->vertex[i]), sizeof(float));
|
||||||
fsMesh.read(reinterpret_cast<char*>(&dataDestination->vertex[i + 1]), sizeof(float));
|
fsMesh.read(reinterpret_cast<char*>(&dataDestination->vertex[i + 1]), sizeof(float));
|
||||||
fsMesh.read(reinterpret_cast<char*>(&dataDestination->vertex[i + 2]), sizeof(float));
|
fsMesh.read(reinterpret_cast<char*>(&dataDestination->vertex[i + 2]), sizeof(float));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::cout << "Vertex number: " << tempSize << std::endl;
|
||||||
|
for (int i = 0; i < tempSize * 3; i += 3)
|
||||||
|
std::cout << dataDestination->vertex[i] << " <> " << dataDestination->vertex[i + 1] << " <> " << dataDestination->vertex[i + 2] << std::endl;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Object::readUV(Modl* dataDestination, std::streampos position)
|
void Object::readUV(Modl* dataDestination, std::streampos position)
|
||||||
|
@ -452,11 +459,11 @@ std::vector<GLfloat> Object::getVertex() const
|
||||||
|
|
||||||
for (std::list<Modl*>::const_iterator it = lModls.begin(); it != lModls.end(); it++)
|
for (std::list<Modl*>::const_iterator it = lModls.begin(); it != lModls.end(); it++)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < (*it)->meshSize; i += 3)
|
for (unsigned int i = 0; i < (*it)->meshSize; i++)
|
||||||
{
|
{
|
||||||
tempData.push_back((GLfloat)(*it)->vertex[(*it)->mesh[i]]);
|
tempData.push_back((GLfloat)(*it)->vertex[(*it)->mesh[i] * 3]);
|
||||||
tempData.push_back((GLfloat)(*it)->vertex[(*it)->mesh[i] + 1]);
|
tempData.push_back((GLfloat)(*it)->vertex[(*it)->mesh[i] * 3 + 1]);
|
||||||
tempData.push_back((GLfloat)(*it)->vertex[(*it)->mesh[i] + 2]);
|
tempData.push_back((GLfloat)(*it)->vertex[(*it)->mesh[i] * 3 + 2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -470,8 +477,12 @@ std::vector<GLfloat> Object::getUV() const
|
||||||
for (std::list<Modl*>::const_iterator it = lModls.begin(); it != lModls.end(); it++)
|
for (std::list<Modl*>::const_iterator it = lModls.begin(); it != lModls.end(); it++)
|
||||||
{
|
{
|
||||||
if ((*it)->uv == NULL)
|
if ((*it)->uv == NULL)
|
||||||
|
{
|
||||||
|
for (unsigned int i = 0; i < (*it)->meshSize; i++)
|
||||||
|
tempData.push_back(1.0);
|
||||||
continue;
|
continue;
|
||||||
for (int i = 0; i < (*it)->meshSize; i++)
|
}
|
||||||
|
for (unsigned int i = 0; i < (*it)->meshSize; i++)
|
||||||
{
|
{
|
||||||
tempData.push_back((GLfloat)(*it)->uv[(*it)->mesh[i]]);
|
tempData.push_back((GLfloat)(*it)->uv[(*it)->mesh[i]]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -285,9 +285,7 @@ void OpenGLController::loadMsh(const char * path)
|
||||||
{
|
{
|
||||||
Object obj(path);
|
Object obj(path);
|
||||||
vfVertices = obj.getVertex();
|
vfVertices = obj.getVertex();
|
||||||
|
vfUV = obj.getUV();
|
||||||
vfUV = loadUV();
|
|
||||||
//vfUV = obj.getUV();
|
|
||||||
}
|
}
|
||||||
catch (std::invalid_argument e)
|
catch (std::invalid_argument e)
|
||||||
{
|
{
|
||||||
|
@ -295,13 +293,16 @@ void OpenGLController::loadMsh(const char * path)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//vfVertices = loadData();
|
|
||||||
//vfUV = loadUV();
|
|
||||||
|
|
||||||
glGenTextures(1, &gluiTextureID);
|
glGenTextures(1, &gluiTextureID);
|
||||||
glBindTexture(GL_TEXTURE_2D, gluiTextureID);
|
glBindTexture(GL_TEXTURE_2D, gluiTextureID);
|
||||||
TextureTGA tempTex(TEXTURE_NAME);
|
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, tempTex.hasAlpha() ? GL_RGBA : GL_RGB, tempTex.getWidth(), tempTex.getHeight(), 0, tempTex.hasAlpha() ? GL_BGRA : GL_BGR, GL_UNSIGNED_BYTE, tempTex.getData().data());
|
// if texture && open ok, then
|
||||||
|
//TextureTGA tempTex(TEXTURE_NAME);
|
||||||
|
//glTexImage2D(GL_TEXTURE_2D, 0, tempTex.hasAlpha() ? GL_RGBA : GL_RGB, tempTex.getWidth(), tempTex.getHeight(), 0, tempTex.hasAlpha() ? GL_BGRA : GL_BGR, GL_UNSIGNED_BYTE, tempTex.getData().data());
|
||||||
|
// else
|
||||||
|
GLubyte solidColor[4] = { 255,0,0,255 };
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA ,1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, (const GLvoid*)solidColor);
|
||||||
|
|
||||||
|
|
||||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
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_WRAP_T, GL_REPEAT);
|
||||||
|
@ -324,4 +325,5 @@ void OpenGLController::loadMsh(const char * path)
|
||||||
vfUV.data(),
|
vfUV.data(),
|
||||||
GL_STATIC_DRAW
|
GL_STATIC_DRAW
|
||||||
);
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue