Scene3d: fix OBJ import

This commit is contained in:
Vadim Lopatin 2016-04-05 11:55:33 +03:00
parent ec25eb2104
commit 35ee4fbb99
2 changed files with 14 additions and 8 deletions
examples/d3d/src
src/dlangui/graphics/scene

View File

@ -121,8 +121,8 @@ class UiWidget : VerticalLayout, CellVisitor {
dirLightNode.translateX(2);
dirLightNode.translateY(3);
dirLightNode.translateZ(3);
dirLightNode.light = Light.createPoint(vec3(1, 0.5, 0.5), 15); //Light.createDirectional(vec3(1, 0.5, 0.5));
//dirLightNode.light = Light.createDirectional(vec3(11, 10.5, 10.5));
//dirLightNode.light = Light.createPoint(vec3(1, 0.5, 0.5), 15); //Light.createDirectional(vec3(1, 0.5, 0.5));
dirLightNode.light = Light.createDirectional(vec3(1, 0.5, 0.8));
dirLightNode.light.enabled = true;
_scene.addChild(dirLightNode);
@ -364,8 +364,8 @@ class UiWidget : VerticalLayout, CellVisitor {
//projectionViewModelMatrix.setIdentity();
//Log.d("matrix uniform: ", projectionViewModelMatrix.m);
checkgl!glEnable(GL_CULL_FACE);
//checkgl!glDisable(GL_CULL_FACE);
//checkgl!glEnable(GL_CULL_FACE);
checkgl!glDisable(GL_CULL_FACE);
checkgl!glEnable(GL_DEPTH_TEST);
checkgl!glCullFace(GL_BACK);

View File

@ -21,13 +21,19 @@ struct ObjModelImport {
protected float[] parseFloatList(Token[] tokens, int maxItems = 3, float padding = 0) {
int i = 0;
int sgn = 1;
foreach(t; tokens) {
if (i >= maxItems)
break;
if (t.type == TokenType.floating)
_buf[i++] = cast(float)t.floatvalue;
else if (t.type == TokenType.integer)
_buf[i++] = cast(float)t.intvalue;
if (t.type == TokenType.floating) {
_buf[i++] = cast(float)(t.floatvalue * sgn);
sgn = 1;
} else if (t.type == TokenType.integer) {
_buf[i++] = cast(float)(t.intvalue * sgn);
sgn = 1;
} else if (t.type == TokenType.minus) {
sgn = -1;
}
}
while(i < maxItems)
_buf[i++] = padding;