📄 renderbin.java
字号:
size = displayListResourceFreeList.size(); for (j=0; j < size; j++) { cv.displayListResourceFreeList.add(displayListResourceFreeList.get(j)); } // Take care of display list that should be freed size = removeDlistPerRinfo.size(); for (j=0; j < size; j++) { RenderAtomListInfo ra = (RenderAtomListInfo)removeDlistPerRinfo.get(j); cv.displayListResourceFreeList.add(new Integer(ra.renderAtom.dlistIds[ra.index])); ra.groupType = 0; ra.renderAtom.dlistIds[ra.index] = -1; } } } void processMessages(long referenceTime) { int i,j, index; Object[] nodes; J3dMessage messages[], m; int component; messages = getMessages(referenceTime); int nMsg = getNumMessage(); if (nMsg > 0) { for (i=0; i < nMsg; i++) { m = messages[i]; switch (m.type) { case J3dMessage.INSERT_NODES: insertNodes(m); m.decRefcount(); break; case J3dMessage.REMOVE_NODES: removeNodes(m); m.decRefcount(); break; case J3dMessage.TRANSFORM_CHANGED: transformMsg = true; m.decRefcount(); break; case J3dMessage.LIGHT_CHANGED: // if none of the mirror lights are scoped to this view // ignore this message LightRetained[] mLts =(LightRetained[])m.args[3] ; for (int k = 0; k < mLts.length; k++) { if (universe.renderingEnvironmentStructure.isLightScopedToThisView(mLts[k], view)) { lightMessageList.add(m); break; } } break; case J3dMessage.SWITCH_CHANGED: visGAIsDirty = true; visQuery = true; processSwitchChanged(m, referenceTime); // may need to process dirty switched-on transform if (universe.transformStructure.getLazyUpdate()) { transformMsg = true; } m.decRefcount(); break; case J3dMessage.BACKGROUND_CHANGED: BackgroundRetained bg = (BackgroundRetained)m.args[0]; if (universe.renderingEnvironmentStructure.isBgScopedToThisView(bg, view)) { reEvaluateBg = true; reloadBgTexture = true; } m.decRefcount(); break; case J3dMessage.CLIP_CHANGED: ClipRetained c = (ClipRetained)m.args[0]; if (universe.renderingEnvironmentStructure.isClipScopedToThisView(c, view)) reEvaluateClip = true; m.decRefcount(); break; case J3dMessage.TRANSPARENCYATTRIBUTES_CHANGED: { NodeComponentRetained nc = (NodeComponentRetained) m.args[0]; GeometryAtom[] gaArr = (GeometryAtom[])m.args[3]; RenderAtom ra = null; int start = -1; // Get the first ra that is visible for (int k = 0; (k < gaArr.length && (start < 0)); k++) { ra = gaArr[k].getRenderAtom(view); if (ra== null || !ra.inRenderBin()) { continue; } else { start = k; } } if (start >= 0) { boolean restructure = (nc.mirror.changedFrequent == 0 || ra.renderMolecule.definingTransparency != nc.mirror); processRenderMoleculeNodeComponentChanged(m.args, RenderMolecule.TRANSPARENCY_DIRTY, start, restructure); } m.decRefcount(); break; } case J3dMessage.POLYGONATTRIBUTES_CHANGED: { NodeComponentRetained nc = (NodeComponentRetained) m.args[0]; GeometryAtom[] gaArr = (GeometryAtom[])m.args[3]; RenderAtom ra = null; int start = -1; // Get the first ra that is visible // Get the first ra that is visible for (int k = 0; (k < gaArr.length && (start < 0)); k++) { ra = gaArr[k].getRenderAtom(view); if (ra== null || !ra.inRenderBin()) { continue; } else { start = k; } } if (start >= 0) { boolean restructure = (nc.mirror.changedFrequent == 0 || ra.renderMolecule.definingPolygonAttributes != nc.mirror); processRenderMoleculeNodeComponentChanged(m.args, RenderMolecule.POLYGONATTRS_DIRTY, start, restructure); } m.decRefcount(); break; } case J3dMessage.LINEATTRIBUTES_CHANGED: { NodeComponentRetained nc = (NodeComponentRetained) m.args[0]; GeometryAtom[] gaArr = (GeometryAtom[])m.args[3]; RenderAtom ra = null; int start = -1; // Get the first ra that is visible // Get the first ra that is visible for (int k = 0; (k < gaArr.length && (start < 0)); k++) { ra = gaArr[k].getRenderAtom(view); if (ra== null || !ra.inRenderBin()) { continue; } else { start = k; } } if (start >= 0) { boolean restructure = (nc.mirror.changedFrequent == 0 || ra.renderMolecule.definingLineAttributes != nc.mirror); processRenderMoleculeNodeComponentChanged(m.args, RenderMolecule.LINEATTRS_DIRTY, start, restructure); } m.decRefcount(); break; } case J3dMessage.POINTATTRIBUTES_CHANGED: { NodeComponentRetained nc = (NodeComponentRetained) m.args[0]; GeometryAtom[] gaArr = (GeometryAtom[])m.args[3]; RenderAtom ra = null; int start = -1; // Get the first ra that is visible // Get the first ra that is visible for (int k = 0; (k < gaArr.length && (start < 0)); k++) { ra = gaArr[k].getRenderAtom(view); if (ra== null || !ra.inRenderBin()) { continue; } else { start = k; } } if (start >= 0) { boolean restructure = (nc.mirror.changedFrequent == 0 || ra.renderMolecule.definingPointAttributes != nc.mirror); processRenderMoleculeNodeComponentChanged(m.args, RenderMolecule.POINTATTRS_DIRTY, start, restructure); } m.decRefcount(); break; } case J3dMessage.MATERIAL_CHANGED: { NodeComponentRetained nc = (NodeComponentRetained) m.args[0]; GeometryAtom[] gaArr = (GeometryAtom[])m.args[3]; RenderAtom ra = null; int start = -1; // Get the first ra that is visible // Get the first ra that is visible for (int k = 0; (k < gaArr.length && (start < 0)); k++) { ra = gaArr[k].getRenderAtom(view); if (ra== null || !ra.inRenderBin()) { continue; } else { start = k; } } if (start >= 0) { boolean restructure = (nc.mirror.changedFrequent == 0 || ra.renderMolecule.definingMaterial != nc.mirror); processRenderMoleculeNodeComponentChanged(m.args, RenderMolecule.MATERIAL_DIRTY, start, restructure); } m.decRefcount(); break; } case J3dMessage.COLORINGATTRIBUTES_CHANGED: { NodeComponentRetained nc = (NodeComponentRetained) m.args[0]; GeometryAtom[] gaArr = (GeometryAtom[])m.args[3]; RenderAtom ra = null; int start = -1; // Get the first ra that is visible // Get the first ra that is visible for (int k = 0; (k < gaArr.length && (start < 0)); k++) { ra = gaArr[k].getRenderAtom(view); if (ra== null || !ra.inRenderBin()) { continue; } else { start = k; } } if (start >= 0) { boolean restructure = (nc.mirror.changedFrequent == 0 || ra.renderMolecule.definingColoringAttributes != nc.mirror); processRenderMoleculeNodeComponentChanged(m.args, RenderMolecule.COLORINGATTRS_DIRTY, start, restructure); } m.decRefcount(); break; } case J3dMessage.TEXTUREATTRIBUTES_CHANGED: processTextureAttributesChanged( (NodeComponentRetained) m.args[0], (GeometryAtom[])m.args[3]); m.decRefcount(); break; case J3dMessage.IMAGE_COMPONENT_CHANGED: addDirtyNodeComponent((NodeComponentRetained)m.args[0]); m.decRefcount(); break; case J3dMessage.TEXTURE_UNIT_STATE_CHANGED: processTextureUnitStateChanged( (NodeComponentRetained) m.args[0], (GeometryAtom[])m.args[3]); m.decRefcount(); break; case J3dMessage.TEXCOORDGENERATION_CHANGED: processTexCoordGenerationChanged( (NodeComponentRetained) m.args[0], (GeometryAtom[])m.args[3]); m.decRefcount(); break; case J3dMessage.TEXTURE_CHANGED: // Texture is always in a sole user position processTextureChanged((NodeComponentRetained) m.args[0], (GeometryAtom[])m.args[3], m.args); m.decRefcount(); break; case J3dMessage.SHADER_APPEARANCE_CHANGED: case J3dMessage.SHADER_ATTRIBUTE_SET_CHANGED: case J3dMessage.SHADER_ATTRIBUTE_CHANGED: processShaderComponentChanged(m.args); m.decRefcount(); break; case J3dMessage.RENDERINGATTRIBUTES_CHANGED: processAttributeBinNodeComponentChanged(m.args); component = ((Integer)m.args[1]).intValue(); if (component == RenderingAttributesRetained.VISIBLE) { visGAIsDirty = true; visQuery = true; } m.decRefcount(); break; case J3dMessage.APPEARANCE_CHANGED: processAppearanceChanged(m.args); m.decRefcount(); break; case J3dMessage.FOG_CHANGED: FogRetained mfog = ((FogRetained)m.args[0]).mirrorFog; if (universe.renderingEnvironmentStructure.isFogScopedToThisView(mfog, view)) { processFogChanged(m.args); } m.decRefcount(); break; case J3dMessage.ALTERNATEAPPEARANCE_CHANGED: AlternateAppearanceRetained maltapp = ((AlternateAppearanceRetained)m.args[0]).mirrorAltApp; if (universe.renderingEnvironmentStructure.isAltAppScopedToThisView(maltapp, view)) { altAppearanceDirty = true; } m.decRefcount(); break; case J3dMessage.MODELCLIP_CHANGED: ModelClipRetained mc= ((ModelClipRetained)m.args[0]).mirrorModelClip; if (universe.renderingEnvironmentStructure.isMclipScopedToThisView(mc, view)) { processModelClipChanged(m.args); } m.decRefcount(); break; case J3dMessage.BOUNDINGLEAF_CHANGED: processBoundingLeafChanged(m.args, referenceTime); m.decRefcount(); break; case J3dMessage.SHAPE3D_CHANGED: processShapeChanged(m.args, referenceTime); m.decRefcount(); break; case J3dMessage.ORIENTEDSHAPE3D_CHANGED: processOrientedShape3DChanged((Object[])m.args[0]); m.decRefcount(); break; case J3dMessage.MORPH_CHANGED: processMorphChanged(m.args, referenceTime); component = ((Integer)m.args[1]).intValue(); if ((component & MorphRetained.GEOMETRY_CHANGED) == 0) { visGAIsDirty = true; visQuery = true; } m.decRefcount(); break; case J3dMessage.UPDATE_VIEW: { View v = (View)m.args[0]; ViewPlatform vp = v.getViewPlatform(); int comp = ((Integer)(m.args[2])).intValue(); int value = ((Integer)(m.args[3])).intValue(); if (comp == View.TRANSP_SORT_POLICY_CHANGED) { if (value != transpSortMode) { reEvaluateSortMode = true; cachedTranspSortMode = value; } } else if (vp != null) { if (value != transpSortMode) { reEvaluateSortMode = true; cachedTranspSortMode = value; } updateViewPlatform((ViewPlatformRetained)vp.retained, ((Float)m.args[1]).floatValue()); visQuery = true; // XXXX : Handle view.visibilityPolicy changed. if(((View.VISIBILITY_POLICY_DIRTY != 0) && (View.VISIBILITY_DRAW_ALL != view.viewCache.visibilityPolicy)) || locale != ((ViewPlatformRetained) (vp.retained)).locale) { for (int n = (renderAtoms.size() - 1); n>=0 ; n--) { removeARenderAtom((RenderAtom) renderAtoms.get(n)); } renderAtoms.clear(); visGAIsDirty = true; if (locale != ((ViewPlatformRetained) (vp.retained)).locale) { locale = ((ViewPlatformRetained) (vp.retained)).locale; localeChanged = true; } } } m.decRefcount(); } break; case J3dMessage.UPDATE_VIEWPLATFORM: updateViewPlatform((ViewPlatformRetained) m.args[0], ((Float)m.args[1]).floatValue()); m.decRefcount(); break; case J3dMessage.TEXT3D_DATA_CHANGED: processDataChanged((Object[])m.args[0], (Object[])m.args[1], referenceTime); m.decRefcount(); break; case J3dMessage.GEOMETRY_CHANGED: processGeometryChanged(m.args); visGAIsDirty = true; visQuery = true; m.decRefcount(); break; case J3dMessage.BOUNDS_AUTO_COMPUTE_CHANGED: case J3dMessage.REGION_BOUND_CHANGED: processGeometryAtomsChanged((Object[])m.args[0]); visGAIsDirty = true; visQuery = true; m.decRefcount(); break; case J3dMessage.TEXT3D_TRANSFORM_CHANGED: processText3DTransformChanged((Object[])m.args[0], (Object[])m.args[1], referenceTime); visQuery = true; m.decRefcount(); break; case J3dMessage.ORDERED_GROUP_INSERTED: processOrderedGroupInserted(m); // Do not do decRefcount() here. We'll do it in updateObject(). ogCIOList.add(m); break; case J3dMessage.ORDERED_GROUP_REMOVED: processOrderedGroupRemoved(m); // Do not do decRefcount() here. We'll do it in updateObject(). ogCIOList.add(m); break; case J3dMessage.ORDERED_GROUP_TABLE_CHANGED: // Do not do decRefcount() here. We'll do it in updateObject(). ogCIOList.add(m); break; case J3dMessage.RENDER_OFFSCREEN: offScreenMessage.add(m); break; case J3dMessage.VIEWSPECIFICGROUP_CHANGED: processViewSpecificGroupChanged(m); visQuery = true; m.decRefcount(); break; default: m.decRefcount(); } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -