Ужасно деконструированная сфера в OpenGL: я не могу найти ошибкуC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ужасно деконструированная сфера в OpenGL: я не могу найти ошибку

Сообщение Anonymous »

Я хотел создать MWE (или, скорее, неработающий пример), но я действительно не знаю, как сократить размер, сохранив при этом работоспособность примера.
Поэтому я собираюсь показать здесь основной код это неправильно, хотя и связано с сутью всего этого. Этот код построен в Linux с использованием glew, glm, webp и использует C++20 для pi.
Суть здесь: https://gist.github.com/ Hydrodog/b8b54b9a26fb0c1af978eda7bfbd32d2
Неверный код кода заключается в создании треугольной полосы для сферы. Я попробовал его распечатать, и он мне кажется хорошим, но явно что-то не так (хотя и чрезвычайно интересно).
Чтобы упростить задачу, я уменьшил количество точек вокруг долготу до 3 (так что это треугольник вокруг экватора) и 5 ​​для широты
z= -0,866025 z=-0,5 z=-2.22045e-16 z=0,5 z=0,866025
@z=-.866
(x,y) = (0,5, 0) (-0,25, 0,433013) (-0,25, -0,433013)
Я пытаюсь построить треугольную полосу вот так:

Код: Выделить всё

0    1    2
3    4    5
затем для соединения со следующей строкой вырожденный треугольник тогда

Код: Выделить всё

3   4   5
6   7   8
и так далее.
Вот код, генерирующий вершины и индексы:

Код: Выделить всё

Sphere::Sphere(double r, uint32_t latRes, uint32_t lonRes) : latRes(latRes), lonRes(lonRes),
resolution((2*latRes-1)*lonRes + 2) {
progid = loadShaders("06b_texturepoints.vert", "06b_textures.frag");
//    progid = loadShaders("03gouraud.vert", "03gouraud.frag");
double dlon = 2.0*numbers::pi / lonRes, dlat = numbers::pi / (2*latRes);
double z;
double lat = -numbers::pi/2 + dlat; // latitude in radians
double rcircle;
float vert[resolution*5]; // x,y,z,u,v
uint32_t c = 0;
for (uint32_t j = 0; j < 2*latRes-1; j++, lat += dlat) {
//what is the radius of hte circle at that height?
rcircle = r* cos(lat); // size of the circle at this latitude
z = r * sin(lat); // height of each circle

cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/79340880/horribly-deconstructed-sphere-in-opengl-i-cant-find-the-bug[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»