Я использовал Blender для создания 3D модальных. Я создал файл .obj и преобразовал его в файл .h, но .h, имеющий только glVertexPointer, glDrawArrays. Я использовал .png файл изображения. Но когда изображение отслеживается, 3D-модал не отображается должным образом. Это какой то черный цвет. Как создать координаты текстуры с помощью Blender или, если я импортирую файл .obj, любое другое программное обеспечение создаст координаты текстуры
/*
created with obj2opengl.pl
source file : .\Sample.obj
vertices : 8428
faces : 14040
normals : 0
texture coords : 0
// include generated arrays
#import ".\Sample.h"
// set input data to arrays
glVertexPointer(3, GL_FLOAT, 0, SampleVerts);
// draw data
glDrawArrays(GL_TRIANGLES, 0, SampleNumVerts);
*/
unsigned int SampleNumVerts = 42120;
float SampleVerts [] = {
// f 2 1 3 4
-0.233114614641671, 0.446055325439014, 0.223483335097295,
0.266885385358329, 0.446055325439014, 0.223483335097295,
0.266885385358329, 0.446055325439014, -0.276516664902705,
// f 2 1 3 4
-0.233114614641671, 0.446055325439014, 0.223483335097295,
-0.233114614641671, 0.446055325439014, -0.276516664902705,
0.266885385358329, 0.446055325439014, -0.276516664902705,
// f 6 5 7 8...........}
Вам нужно экспортировать вашу модель с координатами текстуры из Blender (не эта тема здесь уместна. Учебники Blenders должны ответить на этот вопрос за вас). При преобразовании в формат .h (не уверен, что вы использовали для этого) убедитесь, что вы не пропускаете координаты UV / текстуры. Поместите их в массив, который я назову SampleUVs.
Вы должны добавить это непосредственно перед вызовом glDrawArrays, после glVertexPointer:
glTexCoordPointer(3, GL_FLOAT, 0, SampleUVs);
Это позволяет координаты текстуры из массива SampleUVs. 3 представляет координаты текстуры x, y, z (измените на 2 только для x, y).
Вам также необходимо импортировать текстуру и привязать ее к текстуре. Я бы посоветовал вам правильно прочитать некоторые учебники по базовой загрузке и текстурированию моделей. Вокруг много, хотя это мой любимый
Других решений пока нет …