En OpenGL, générer des objets complexes tels que des sphères nécessite de créer des maillages qui définissent l'objet apparence. Cela implique de définir des sommets, des normales, des coordonnées de texture (le cas échéant) et des indices pour dessiner les maillages.
Pour créer une sphère personnalisée, nous définissons une classe SolidSphere qui prend les paramètres du rayon de la sphère et le nombre d'anneaux et de secteurs utilisés pour définir son maillage. Le constructeur de classe génère les données de sommet, de normale, de coordonnées de texture et d'index nécessaires.
Pour afficher la sphère, nous appelons sa méthode draw, en spécifiant sa position dans l'espace 3D.
Voici un exemple d'extrait de code qui utilise SolidSphere class:
#include <GL/gl.h> #include <GL/glu.h> #include <vector> #include <cmath> class SolidSphere { std::vector<GLfloat> vertices; std::vector<GLfloat> normals; std::vector<GLfloat> texcoords; std::vector<GLushort> indices; public: SolidSphere(float radius, unsigned int rings, unsigned int sectors); void draw(GLfloat x, GLfloat y, GLfloat z); }; SolidSphere sphere(1, 12, 24); void display() { // Configure viewport and projection // Clear buffers glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Draw the sphere sphere.draw(0, 0, -5); // Swap buffers } int main() { // Initialize OpenGL and register window // Set display callback function glutDisplayFunc(display); // Enter main event loop glutMainLoop(); return 0; }
En créant nos propres données de maillage, nous gagnons en flexibilité et en contrôle sur l'apparence de la sphère. L'extrait de code fourni montre comment utiliser la classe SolidSphere personnalisée pour dessiner une sphère 3D dans OpenGL.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!