fixed the multiedged polygons

This commit is contained in:
Anakin 2016-11-23 17:30:38 +01:00
parent 232acedce7
commit 23ce58291e
3 changed files with 4 additions and 13 deletions

View File

@ -6,7 +6,6 @@
#include <string> #include <string>
#include <glm\gtc\matrix_transform.hpp> #include <glm\gtc\matrix_transform.hpp>
#include <iostream>
#define VERTEX_SHADER "Shader/TextureShader.vert" #define VERTEX_SHADER "Shader/TextureShader.vert"
#define FRAGMENT_SHADER "Shader/TextureShader.frag" #define FRAGMENT_SHADER "Shader/TextureShader.frag"
@ -389,21 +388,19 @@ void OpenGLController::loadMsh(const char * path)
{ {
for (auto& mshIt : segIt->meshIndices) // for every polygon for (auto& mshIt : segIt->meshIndices) // for every polygon
{ {
std::cout << "== Poly ==" << std::endl;
if (mshIt->size() >= 3) // multipoly if (mshIt->size() >= 3) // multipoly
{ {
// for every triangle of the multi polygon // for every triangle of the multi polygon
for (unsigned int tri = 0; tri < mshIt->size() - 2; tri++) for (unsigned int tri = 0; tri < mshIt->size() - 2; tri++)
{ {
std::cout << "== Triangle ==" << std::endl;
// for every edge of the triangle // for every edge of the triangle
for (int triEdge = 0; triEdge < 3; triEdge++) for (int triEdge = 0; triEdge < 3; triEdge++)
{ {
Vertex tempVertex; Vertex tempVertex;
// every edge has 3 coordinates // every edge has 3 coordinates
for (int j = 0; j < 3; j++) for (int j = 0; j < 3; j++)
tempVertex.position[j] = (GLfloat)segIt->vertex[(*mshIt)[triEdge > 0 ? tri + triEdge : 0] * 3 + j]; tempVertex.position[j] = (GLfloat)segIt->vertex[(*mshIt)[tri + triEdge - ((tri % 2) * (triEdge - 1) * 2)] * 3 + j];
std::cout << (triEdge > 0 ? tri + triEdge : 0) << std::endl;
// and 2 UV // and 2 UV
if (segIt->uv == NULL) if (segIt->uv == NULL)
{ {
@ -413,7 +410,7 @@ void OpenGLController::loadMsh(const char * path)
else else
{ {
for (int j = 0; j < 2; j++) for (int j = 0; j < 2; j++)
tempVertex.uv[j] = (GLfloat)segIt->uv[(*mshIt)[triEdge > 0 ? tri + triEdge : 0] * 2 + j]; tempVertex.uv[j] = (GLfloat)segIt->uv[(*mshIt)[tri + triEdge - ((tri % 2) * (triEdge - 1) * 2)] * 2 + j];
} }
tempBufferData.push_back(tempVertex); tempBufferData.push_back(tempVertex);
} }
@ -462,7 +459,6 @@ void OpenGLController::loadMsh(const char * path)
} }
catch (std::invalid_argument e) catch (std::invalid_argument e)
{ {
GLubyte solidColor[4] = { 0, 0, 255, 255 };
tempData->alpha = true; tempData->alpha = true;
tempData->width = 1; tempData->width = 1;
tempData->height = 1; tempData->height = 1;
@ -474,7 +470,6 @@ void OpenGLController::loadMsh(const char * path)
// add a solid default color at the end (maybe there is an invalid index later) // add a solid default color at the end (maybe there is an invalid index later)
textureData* tempData = new textureData; textureData* tempData = new textureData;
GLubyte solidColor[4] = { 0, 0, 255, 255 };
tempData->alpha = true; tempData->alpha = true;
tempData->width = 1; tempData->width = 1;
tempData->height = 1; tempData->height = 1;

View File

@ -57,7 +57,6 @@ TextureTGA::TextureTGA(const char * filePath)
std::uint8_t tempChunkHeader; std::uint8_t tempChunkHeader;
std::uint8_t tempData[5]; std::uint8_t tempData[5];
unsigned int tempByteIndex = 0; unsigned int tempByteIndex = 0;
std::size_t tempPixelIndex = 0;
do { do {
fsPicture.read(reinterpret_cast<char*>(&tempChunkHeader), sizeof(tempChunkHeader)); fsPicture.read(reinterpret_cast<char*>(&tempChunkHeader), sizeof(tempChunkHeader));

View File

@ -13,10 +13,7 @@ Feel free to use my code the way you like. But remember i used some public libra
licence, too. licence, too.
### To Do ### To Do
- cluster use wrong textures - cloth not working correctly
- use normals or fix ccw and cw
- multipoly triangulation not 100% good
- cloth testing
- optional display bones, shadow, collision,... - optional display bones, shadow, collision,...
- integrate into a software: - integrate into a software:
-> gui open file ( + drag and drop), -> gui open file ( + drag and drop),