aboutsummaryrefslogtreecommitdiffstats
path: root/src/native/d3d/Canvas3D.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/native/d3d/Canvas3D.cpp')
-rw-r--r--src/native/d3d/Canvas3D.cpp59
1 files changed, 37 insertions, 22 deletions
diff --git a/src/native/d3d/Canvas3D.cpp b/src/native/d3d/Canvas3D.cpp
index 661c20d..4c31d88 100644
--- a/src/native/d3d/Canvas3D.cpp
+++ b/src/native/d3d/Canvas3D.cpp
@@ -69,30 +69,34 @@ jlong JNICALL Java_javax_media_j3d_Canvas3D_createNewContext(
return 0;
}
- if (offScreen) {
-
- jclass cls = (jclass) env->GetObjectClass(obj);
- jfieldID fieldId = env->GetFieldID(cls,
+ if (offScreen)
+ {
+ jclass cls = (jclass) env->GetObjectClass(obj);
+ jfieldID fieldId = env->GetFieldID(cls,
"offScreenCanvasSize",
"Ljava/awt/Dimension;");
- jobject dimObj = env->GetObjectField(obj, fieldId);
- if (dimObj == NULL) {
- // user invoke queryProperties()
- ctx->offScreenWidth = 1;
- ctx->offScreenHeight = 1;
- } else {
- cls = (jclass) env->GetObjectClass(dimObj);
- fieldId = env->GetFieldID(cls, "width", "I");
- ctx->offScreenWidth = env->GetIntField(dimObj, fieldId);
- fieldId = env->GetFieldID(cls, "height", "I");
- ctx->offScreenHeight = env->GetIntField(dimObj, fieldId);
- }
+ jobject dimObj = env->GetObjectField(obj, fieldId);
+ if (dimObj == NULL)
+ {
+ // user invoke queryProperties()
+ ctx->offScreenWidth = 1;
+ ctx->offScreenHeight = 1;
+ }
+ else
+ {
+ cls = (jclass) env->GetObjectClass(dimObj);
+ fieldId = env->GetFieldID(cls, "width", "I");
+ ctx->offScreenWidth = env->GetIntField(dimObj, fieldId);
+ fieldId = env->GetFieldID(cls, "height", "I");
+ ctx->offScreenHeight = env->GetIntField(dimObj, fieldId);
+ }
}
- if (!ctx->initialize(env, obj)) {
- delete ctx;
- unlock();
- return 0;
+ if (!ctx->initialize(env, obj))
+ {
+ delete ctx;
+ unlock();
+ return 0;
}
d3dCtxList.push_back(ctx);
@@ -345,15 +349,26 @@ void JNICALL Java_javax_media_j3d_Canvas3D_clear(
}
/* clear stencil, if in used */
+
if (d3dCtx->stencilWriteEnable )
{// clear stencil and ZBuffer
- device->Clear(0, NULL, D3DCLEAR_STENCIL | D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
+ HRESULT hr = device->Clear(0, NULL, D3DCLEAR_STENCIL | D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_COLORVALUE(r, g, b, 1.0f), 1.0, 0);
+ if (hr == D3DERR_INVALIDCALL)
+ {
+ printf("[Java3D] Error cleaning Canvas3D stencil & ZBuffer\n");
+ }
+ // printf("canvas3D clear stencil & ZBuffer\n");
}
else
{ // clear ZBuffer only
- device->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
+ HRESULT hr = device->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,
D3DCOLOR_COLORVALUE(r, g, b, 1.0f), 1.0, 0);
+ if (hr == D3DERR_INVALIDCALL)
+ {
+ printf("[Java3D] Error cleaning Canvas3D ZBuffer\n");
+ }
+ // printf("canvas3D clear ZBuffer\n");
}