Top.Mail.Ru
Ответы

Помощь с рендером необычной сферы.

Есть код сферы, мне нужно на каждой вершине у всех полигонов отрисовать кружок. Нарисовать я сам смогу, но не пойму как указать координаты. Если это возможно с этим кодом, то помогите, пожалуйста. :D

Вот сам класс:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
 class Sphere { 
	protected: 
		std::vector<float> vertices; 
		std::vector<float> normals; 
		std::vector<float> texcoords; 
		std::vector<USHORT> indices; 
 
	public: 
        Sphere(float radius, unsigned int rings, unsigned int sectors) { 
            float const R = 1. / (float)(rings - 1); 
            float const S = 1. / (float)(sectors - 1); 
            int r, s; 
 
            vertices.resize(rings * sectors * 3); 
            normals.resize(rings * sectors * 3); 
            texcoords.resize(rings * sectors * 2); 
            std::vector<GLfloat>::iterator v = vertices.begin(); 
            std::vector<GLfloat>::iterator n = normals.begin(); 
            std::vector<GLfloat>::iterator t = texcoords.begin(); 
            for (r = 0; r < rings; r++) for (s = 0; s < sectors; s++) { 
                float const y = sin(-(M_PI / 2) + M_PI * r * R); 
                float const x = cos(2 * M_PI * s * S) * sin(M_PI * r * R); 
                float const z = sin(2 * M_PI * s * S) * sin(M_PI * r * R); 
 
                *t++ = s * S; 
                *t++ = r * R; 
 
                *v++ = x * radius; 
                *v++ = y * radius; 
                *v++ = z * radius; 
 
                *n++ = -x; 
                *n++ = -y; 
                *n++ = -z; 
            } 
 
            indices.resize(rings * sectors * 4); 
            std::vector<GLushort>::iterator i = indices.begin(); 
 
            for (r = 0; r < rings - 1; r++) { 
                for (s = 0; s < sectors - 1; s++) { 
                    *i++ = (r + 1) * sectors + s; 
                    *i++ = (r + 1) * sectors + (s + 1); 
                    *i++ = r * sectors + (s + 1); 
                    *i++ = r * sectors + s; 
                } 
            } 
        } 
 
        void drawSphere(float x, float y, float z) { 
 
        } 
}; 
По дате
По Рейтингу
Аватар пользователя
Просветленный