Gölgelendiricilerle nasıl bir çizgi (muhtemelen renkli) oluştururum? Programlanabilir boru hattı kullanıyorum ve openGL ile yeni başlayan biriyim. Gölgelendiricilerle çizgilerin nasıl çizileceğine dair bir örnek bulamıyorum. Sanırım gölgelendiriciye bir VAO (vertices array nesnesi) yüklemem gerekiyor, ama sonra ne olacak? Hangi fonksiyonları kullanmalıyım ve nasıl yapmalıyım?openGL: shader'lu satırlar
14
A
cevap
9
İlk önce gölgelendirme programını kullanın. Daha sonra glDrawArrays (veya verileriniz indekslenmişse Elements) kullanarak mod = GL_LINES veya diğer çizgi çizim modlarından birini kullanarak çizgiler çizin.
Her uçta farklı renklere sahip 2B çizgiler için bir kod örneği. Gölgeleme modu pürüzsüz olarak ayarlanmışsa, OpenGL çizgi boyunca renkleri arayacaktır.
struct LineSegment_t
{
float x1, y1;
float r1,g1,b1,a1;
float x2, y2;
float r2,g2,b2,a2;
};
int num_verts = lines.size()*2;
glBindVertexArray(line_vao); // setup for the layout of LineSegment_t
glBindBuffer(GL_ARRAY_BUFFER, LineBufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(LineSegment_t)/2 * num_verts, &lines[0], GL_DYNAMIC_DRAW);
glDrawArrays(GL_LINES, 0, num_verts);
Daha fazla esneklik gerekirse, satır uç noktalarından bir dikdörtgen (4 puan) oluşturarak üçgenler kullanarak hatları çizebilir. 2B'de, bitiş çizgisini normal/dikey (-y, x) satırını kullanarak istenen satır ile çevirerek 4 puan oluşturabilirsiniz. 3B'de üçgenlerin, reklam panosunda olduğu gibi kameraya hizalandığından emin olmanız gerekir.
Üçgenleri nasıl çizeceğinizi biliyor musunuz? Gerçekten farklı değil, GL_TRIANGLES yerine glDrawArrays/glDrawElements – Tim
örnek kod yerine GL_LINES belirtin mi? –