Optmize clipping
This commit is contained in:
parent
27dde4bc4b
commit
f6cacf0f86
|
@ -993,9 +993,6 @@ int main(){
|
|||
view = mat4::rotateY(view, -cameraAngle - HALF_PI);
|
||||
view = mat4::translate(view, -cameraPos.x, 0, -cameraPos.z);
|
||||
|
||||
// Rasterizer::drawModel(trees, false);
|
||||
// Rasterizer::drawTriangle(trees.mesh.triangles[51+51*100], trees.shader, false);
|
||||
|
||||
carModel.modelMatrix = carMatrix;
|
||||
carModel.viewMatrix = view;
|
||||
|
||||
|
@ -1012,6 +1009,7 @@ int main(){
|
|||
// sprintf(buffer, "%d", (int)Time::delta);
|
||||
itoa((int)Time::delta, (unsigned char*)buffer);
|
||||
#endif
|
||||
// Display::fillRect(0, 0, 30, 20, newColor(0, 0, 0));
|
||||
Display::drawText(0, 0, buffer, newColor(255, 255, 255));
|
||||
|
||||
Display::show();
|
||||
|
|
|
@ -332,11 +332,25 @@ namespace Rasterizer {
|
|||
return;
|
||||
}
|
||||
|
||||
Mesh mesh = clipTriangle(triangle);
|
||||
for(int i = 0; i < mesh.numTriangles; i++){
|
||||
_drawTriangle(model, mesh.triangles[i], useDepth, isShaded);
|
||||
bool allInside = true;
|
||||
for(int i = 0; i < 5; i++){
|
||||
if(dot3(clippingPlanes[i].n, triangle.p0) + clippingPlanes[i].d < 0
|
||||
|| dot3(clippingPlanes[i].n, triangle.p1) + clippingPlanes[i].d < 0
|
||||
|| dot3(clippingPlanes[i].n, triangle.p2) + clippingPlanes[i].d < 0){
|
||||
allInside = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(allInside){
|
||||
_drawTriangle(model, triangle, useDepth, isShaded);
|
||||
} else {
|
||||
Mesh mesh = clipTriangle(triangle);
|
||||
for(int i = 0; i < mesh.numTriangles; i++){
|
||||
_drawTriangle(model, mesh.triangles[i], useDepth, isShaded);
|
||||
}
|
||||
free(mesh.triangles);
|
||||
}
|
||||
free(mesh.triangles);
|
||||
}
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue