private void processObjects(int idActualPol, int isTextured, ref NsbmdModel.ShapeInfoStruct actualPolygon, ref NsbmdModel.MatTexPalStruct actualMaterials, int num_obj, int idActualMateria) { NsbmdModel.NodeInfoStruct actualNodeInfo = modelList[idModel].getMDL0at(0).nodeInfoList[num_obj]; if (actualNodeInfo.restoreId != -1) { Gl.glLoadMatrixf(MatrixStack[actualNodeInfo.restoreId].Floats); } if (actualNodeInfo.stackId != -1) { Gl.glGetFloatv(Gl.GL_MODELVIEW_MATRIX, MatrixStack[actualNodeInfo.stackId].Floats); stackID = actualNodeInfo.stackId; } Gl.glLoadIdentity(); actualPolygon = modelList[idModel].getMDL0at(0).shapeInfo.shapeList[idActualPol]; var actualMaterial = modelList[idModel].getMaterials()[idActualMaterial]; if (isTextured == 0) { Gl.glPolygonMode(0x408, 0x1b01); } else { Gl.glPolygonMode(0x408, 0x1b02); } Gl.glBindTexture(Gl.GL_TEXTURE_2D, idActualMaterial + 1); Gl.glMatrixMode(Gl.GL_TEXTURE); Gl.glLoadIdentity(); if ((actualMaterials.flipS == 1) && (actualMaterials.repeatS > 0)) { Gl.glScalef(2f / ((float)actualMaterials.width), 1f / ((float)actualMaterials.heigth), 1f); } else if ((actualMaterials.flipT == 1) && (actualMaterials.repeatT > 0)) { Gl.glScalef(1f / ((float)actualMaterials.width), 2f / ((float)actualMaterials.heigth), 1f); } else { Gl.glScalef(1f / ((float)actualMaterials.width), 1f / ((float)actualMaterials.heigth), 1f); } Gl.glColor3f(1f, 1f, 1f); stackID = actualPolygon.stackId; modelList[idModel].getMDL0at(0).shapeInfo.shapeList[idActualPol] = process3DCommand(actualPolygon.polygonData, actualPolygon); }
public NsbmdModel renderAllPolygon(int idActualPoly, int isTextured, int[] idMaterialArray) { if (modelList.Count == 0) { return(null); } for (int num_obj = 0; num_obj < modelList[idModel].getMDL0at(0).nodeInfoList.Count; num_obj++) { NsbmdModel.NodeInfoStruct actualNodeInfo = modelList[0].getMDL0at(0).nodeInfoList[num_obj]; if (actualNodeInfo.restoreId != -1) { Gl.glLoadMatrixf(MatrixStack[0].Floats); } Gl.glGetFloatv(Gl.GL_MODELVIEW_MATRIX, MatrixStack[0].Floats); stackID = 0; Gl.glLoadIdentity(); for (int polyCounter = 0; polyCounter <= idActualPoly; polyCounter++) { renderPolygon(isTextured, idMaterialArray, polyCounter); } } return(modelList[idModel].getMDL0at(0)); }