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