MSVC another fix
This commit is contained in:
parent
bab7fc8f12
commit
d6236a7857
@ -13,7 +13,7 @@ endif()
|
|||||||
if(NOT MSVC)
|
if(NOT MSVC)
|
||||||
add_compile_options(-Wall)
|
add_compile_options(-Wall)
|
||||||
else()
|
else()
|
||||||
add_compile_options(/Wall)
|
add_compile_options(/Wall /wd4710 /wd4711)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
|
set(INSTALL_BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin" CACHE PATH "Installation directory for executables")
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
//#define DISABLE_AABB_CLIPPING
|
//#define DISABLE_AABB_CLIPPING
|
||||||
//#define DISABLE_TRIANGLE_CLIPPING
|
//#define DISABLE_TRIANGLE_CLIPPING
|
||||||
//#define DISABLE_WIREFRAME_MODE
|
#define DISABLE_WIREFRAME_MODE
|
||||||
|
|
||||||
|
|
||||||
// Rendering pipeline:
|
// Rendering pipeline:
|
||||||
@ -149,6 +149,8 @@ void Graphic3DRenderer::Draw(sf::RenderTexture& context) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Process scene's objects
|
// Process scene's objects
|
||||||
|
size_t prevVCount = 0;
|
||||||
|
std::vector<M3D_F4> projVertices;
|
||||||
for (auto& obj : mRenderList) {
|
for (auto& obj : mRenderList) {
|
||||||
M3D_BoundingBox projAABB = obj->GetAABB();
|
M3D_BoundingBox projAABB = obj->GetAABB();
|
||||||
auto oTMat = obj->GetTransform();
|
auto oTMat = obj->GetTransform();
|
||||||
@ -162,11 +164,12 @@ void Graphic3DRenderer::Draw(sf::RenderTexture& context) {
|
|||||||
{
|
{
|
||||||
size_t vCount = obj->GetObjectVerticesCount();
|
size_t vCount = obj->GetObjectVerticesCount();
|
||||||
auto& oMesh = obj->GetObjectMesh();
|
auto& oMesh = obj->GetObjectMesh();
|
||||||
M3D_F4 projVertices[vCount] = {};
|
if (vCount > prevVCount)
|
||||||
|
projVertices.resize(vCount);
|
||||||
|
|
||||||
// Vertices homogeneous clip space transformation
|
// Vertices homogeneous clip space transformation
|
||||||
M3D_V3Transform(
|
M3D_V3Transform(
|
||||||
projVertices, sizeof(M3D_F4),
|
projVertices.data(), sizeof(M3D_F4),
|
||||||
reinterpret_cast<const M3D_F3*>(oMesh.vertices.data()), sizeof(Vertex),
|
reinterpret_cast<const M3D_F3*>(oMesh.vertices.data()), sizeof(Vertex),
|
||||||
vCount,
|
vCount,
|
||||||
oTMat * viewProjMat
|
oTMat * viewProjMat
|
||||||
@ -185,15 +188,15 @@ void Graphic3DRenderer::Draw(sf::RenderTexture& context) {
|
|||||||
// Triangle clipping
|
// Triangle clipping
|
||||||
#ifndef DISABLE_TRIANGLE_CLIPPING
|
#ifndef DISABLE_TRIANGLE_CLIPPING
|
||||||
//TODO: scissor/clipping depending of how many vertices are outside/inside the clipspace, implement complete Cohen-Sutherland algo or Cyrus–Beck one
|
//TODO: scissor/clipping depending of how many vertices are outside/inside the clipspace, implement complete Cohen-Sutherland algo or Cyrus–Beck one
|
||||||
if (VertexClipTest(projVertices[indicePtr[i]], mRTSize, 2.5f) &&
|
if (VertexClipTest(projVertices.at(indicePtr[i]), mRTSize, 2.5f) &&
|
||||||
VertexClipTest(projVertices[indicePtr[i+1]], mRTSize, 2.5f) &&
|
VertexClipTest(projVertices.at(indicePtr[i+1]), mRTSize, 2.5f) &&
|
||||||
VertexClipTest(projVertices[indicePtr[i+2]], mRTSize, 2.5f))
|
VertexClipTest(projVertices.at(indicePtr[i+2]), mRTSize, 2.5f))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
|
||||||
M3D_VECTOR V1 = M3D_V4LoadF4(&projVertices[indicePtr[i]]);
|
M3D_VECTOR V1 = M3D_V4LoadF4(&projVertices.at(indicePtr[i]));
|
||||||
M3D_VECTOR V2 = M3D_V4LoadF4(&projVertices[indicePtr[i+1]]);
|
M3D_VECTOR V2 = M3D_V4LoadF4(&projVertices.at(indicePtr[i+1]));
|
||||||
M3D_VECTOR V3 = M3D_V4LoadF4(&projVertices[indicePtr[i+2]]);
|
M3D_VECTOR V3 = M3D_V4LoadF4(&projVertices.at(indicePtr[i+2]));
|
||||||
|
|
||||||
// Do the perspective divide
|
// Do the perspective divide
|
||||||
V1 = M3D_V4Divide(V1, M3D_V4SplatW(V1));
|
V1 = M3D_V4Divide(V1, M3D_V4SplatW(V1));
|
||||||
@ -234,6 +237,8 @@ void Graphic3DRenderer::Draw(sf::RenderTexture& context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prevVCount = prevVCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user