它應該是circle(float xcenter, float ycenter, float radius)
的形式。如何在opengl中實現圓形填充算法?
2
A
回答
7
使用GL_TRIANGLE_FAN
撲通下來的中心點,然後在外圍頂點:
void glCircle(float x, float y, float r, bool filled = true, unsigned int subdivs = 20) {
if(filled) {
glBegin(GL_TRIANGLE_FAN);
glVertex2f(x, y);
} else {
glBegin(GL_LINE_STRIP);
}
for(unsigned int i = 0; i <= subdivs; ++i) {
float angle = i * ((2.0f * 3.14159f)/subdivs);
glVertex2f(x + r * cos(angle), y + r * sin(angle));
}
glEnd();
}
2
有一個gluDisk
,但它比你給了一個稍微不同的簽名。它始終將磁盤居中在原點上,並且希望您使用glTranslate
,如果這不是您想要的磁盤位置。它在其他方面也更加通用 - 它繪製的磁盤可以在中心有一個洞,你顯然不關心它,還有一個「循環」參數可以在一個磁盤上繪製多個磁盤時間。這使得它適應你問的只是更多的工作比你想:
void circle(float xcenter, float ycenter, float radius) {
GLUquadric* quad = gluNewQuadric();
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glTranslatef(xcenter, ycenter);
gluDisk(quad, 0, radius, 256, 1);
glPopMatrix();
gluDeleteQuadric(quad);
}
我會說這是正確的,這是值得商榷是否它更容易只是做了點像@genpfault說的那樣,自己畫一個圓形的三角形扇。
相關問題
- 1. 如何在SWT中使用圓角填充矩形實現透明度?
- 2. 多邊形填充算法
- 3. 填充三角形算法
- 4. 繪製和填充圓形
- 5. 用輪廓填充圓形
- 6. 「Bresenham的」圓算法填充問題
- 7. 在Levenstein距離算法實現中填充動作矩陣
- 8. 如何在WPF中實現錐形/錐形/圓形漸變
- 9. 如何在Rebol中繪製和填充圓角矩形
- 10. 如何在android中使用opengl-es 2.0填充多邊形?
- 11. 如何獲得洪水填充算法來處理閉合圓?
- 12. 在java腳本洪水填充算法實現
- 13. 多邊形圖像填充算法
- 14. 圓形填充拋出無關錯誤
- 15. 繪製透明圓形外部填充
- 16. 更改橢圓形填充序列
- 17. CSS圓形邊框填充動畫
- 18. 在Android中實現iOS圓形按鈕
- 19. Opengl不規則形狀顏色填充
- 20. OpenGL填充多邊形顏色「流血」
- 21. 實施洪水填充算法
- 22. 如何實現自填充EHcache?
- 23. 如何在java中填充多邊形?
- 24. 如何在PHP中實現梯形法?
- 25. 的Android Layerlist用實心填充圈內透明填充外圓
- 26. 在iOS中實現自動填充
- 27. 如何在FFMPEG中填充/計算motion_val?
- 28. 如何啓動桶填充算法
- 29. 如何在SQL中實現此算法?
- 30. 如何在J2ME中實現Blowfish算法?