0
我想在Opengl中渲染一個圓柱體。對於我寫了一個簡單的算法,即 生成我的點網格由參數半徑,高度,xSubDivisions和ySubDivisions: (爪哇)圓柱算法的奇怪之處
for(int yDivision = 0; yDivision < yDivisionCount; yDivision++){
for(int xDivision = 0; xDivision < xDivisionCount; xDivision++){
float line[] = getVboLine(xDivision, yDivision, radius, height, xDivisionCount, yDivisionCount);
string.append(line[0] + ", " + line[1] + ", " + line[2] + ", " + line[3] + ", " + line[4] + ", ");
}
}
public float[] getVboLine(int xDivision, int yDivision, float radius, float height, int xDivisionCount, int yDivisionCount){
float xDegrees = 360.0f/xDivisionCount * xDivision;
float xRadian = (float) Math.toRadians(xDegrees);
float x = (float) Math.sin(xRadian) * radius;
float z = (float) Math.cos(xRadian) * radius;
float y = (float) yDivision * (height/(yDivisionCount - 1));
float s = xDegrees * (1.0f/360.0f);
float t = yDivision * (1.0f/(yDivisionCount - 1));
return new float[]{
x, y, z, s, t
};
}
結果實際上是一個氣缸中,(i創建的IBO到渲染這一點),但有時,與x和yDivisions不同的投入有一個奇怪的差距。 我找不到規則,但是我發現此錯誤的值是200,100。 要調試我只渲染了點。其結果是:
這怎麼可能?有一點只是缺失(我添加了塗料的蘆葦圈)。 我的算法問題在哪裏?
是這點在你的渲染唯一缺少的,或者是它也不會在你的輸入? – usr2564301 2014-09-28 15:40:35
在輸入中似乎也錯過了。問題是我不能真正檢查這個,因爲對於分區的小值不會出現...但是我會盡力確保 – 2014-09-28 15:53:50
它在渲染過程中不會出錯。Im渲染:「GL11.glDrawArrays(GL11.GL_POINTS,0,vertices.length/5);」 這應該是數組中的所有點... – 2014-09-28 15:57:38