Open liufeicc opened 11 months ago
ERROR IN Function isHidden
com.aparapi.internal.instruction.ExpressionList LINE 526:might be mistaken for a do while!
Here are some of my code: @Override public void run() { int triangleIdx = getGlobalId();
int firstVertex = indexBuffer[triangleIdx * 3 + 2]; int secondVertex = indexBuffer[triangleIdx * 3 + 1]; int thirdVertex = indexBuffer[triangleIdx * 3]; setVertex(VIdxN3(triangleIdx, 0), updatedVertices, firstVertex, updatedVertexBuffer); setVertex(VIdxN3(triangleIdx, 1), updatedVertices, secondVertex, updatedVertexBuffer); setVertex(VIdxN3(triangleIdx, 2), updatedVertices, thirdVertex, updatedVertexBuffer); vertexLightLevel[N4(triangleIdx, 0)] = vertexLightLevelBuffer[firstVertex]; vertexLightLevel[N4(triangleIdx, 1)] = vertexLightLevelBuffer[secondVertex]; vertexLightLevel[N4(triangleIdx, 2)] = vertexLightLevelBuffer[thirdVertex]; if(isHidden(triangleIdx)) return; if(clipZNearPlane(triangleIdx)) return; if(colorRenderType == 2) transformTexture(triangleIdx, firstVertex); else if(colorRenderType == 3) transformBarycentricTextured(triangleIdx); scanTriangle(triangleIdx); } private boolean isHidden(int triangleIdx) { boolean allBehindClippingPlane = true; for (int i = 0; i < 3; i++) { if (ZN33(triangleIdx, i) >= nearClipDistance) { allBehindClippingPlane = false; break; } } if (allBehindClippingPlane) return true; setVertex(triangleIdx, edge1, VIdxN3(triangleIdx, 1), updatedVertices); sub(triangleIdx, edge1, VIdxN3(triangleIdx, 0), updatedVertices); setVertex(triangleIdx, edge2, VIdxN3(triangleIdx, 2), updatedVertices); sub(triangleIdx, edge2, VIdxN3(triangleIdx, 0), updatedVertices); cross(triangleIdx, surfaceNormal, triangleIdx, edge1, triangleIdx, edge2); float dotProduct = dot(triangleIdx, surfaceNormal, VIdxN3(triangleIdx, 0), updatedVertices); if (dotProduct >= 0) return true; testBoundary(triangleIdx); if (leftMostPosition[triangleIdx] == SCREEN_W || rightMostPosition[triangleIdx] == -1 || upperMostPosition[triangleIdx] == SCREEN_H || lowerMostPosition[triangleIdx] == -1) return true; isClippingRightOrLeft[triangleIdx] = false; if (leftMostPosition[triangleIdx] < 0 || rightMostPosition[triangleIdx] >= SCREEN_W) isClippingRightOrLeft[triangleIdx] = true; return false; }
ERROR IN Function isHidden
com.aparapi.internal.instruction.ExpressionList LINE 526:might be mistaken for a do while!
Here are some of my code: @Override public void run() { int triangleIdx = getGlobalId();