有人可以幫助我理解這段代碼的邏輯嗎?它不是隨便畫一個圓圈。基於Android OpenGL ES Line的圈子
#include <math.h>
...
void drawCircle(){
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(programObject);
const float DEG2RAD = 3.14159f/180.0f;
int totalVertices = 360;
const float radsPerLine = (360.f/totalVertices) * DEG2RAD;
float lineVertices[(totalVertices * 4)];
int i;
int ii = 0;
float rad = 0.8f;
for (i = 0; i < (totalVertices); i++) {
float degInRad = radsPerLine * i;
float cosine = cos(degInRad);
float sine = sin(degInRad);
lineVertices[ii++] = 0.0f;
lineVertices[ii++] = 0.0f;
lineVertices[ii++] = cosine * rad;
lineVertices[ii++] = sine * rad;
}
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, lineVertices);
glEnableVertexAttribArray(0);
glDrawArrays(GL_LINES, 0, totalVertices * 4);
}
分形圖案出現在很高的數字(如360)。另一個奇怪的事情是有些線條比其他奇怪的線條看起來更高。
您將要覆蓋在每次迭代先前計算的數據相乘。你應該增加2我 – Trax
謝謝,有一點幫助,但看看我準備寫更新。 – Jackie
你的新代碼仍然是錯誤的,後綴++運算符在發射一個值後發生,這意味着lineVertices [ii ++] = sin(degInRad)* 0.8f;正在覆蓋以前的數據。將其改爲++ ii。 – Trax