2013-10-20 3 views
0

Я использую xcode с перенасыщением, OpenGL и C++, и я пытаюсь импортировать и нарисовать модель. Я использовал obj для преобразования файла .h, и это небольшая часть заголовка, чтобы вы могли видеть структуру.Рисунок модели из файла заголовка C++

unsigned int M4GunNumVerts = 37812; 
GLfloat M4GunVerts [] = { 
// f 1/1/1 1582/2/1 4733/3/1 
{0.266494348503772, 0.0252334302709736, -0.000725898139236535}, 
{0.265592372987502, 0.0157389511523397, -0.000725898139236535}, 
{0.264890836474847, 0.0182004476109518, -0.00775888079925833}, 

Я попытался нарисовать это в своем главном с помощью этого кода.

glVertexPointer(3, GL_FLOAT, 0, M4GunVerts); 
glNormalPointer(GL_FLOAT, 0, M4GunNormals); 
glTexCoordPointer(2, GL_FLOAT, 0, M4GunTexCoords); 
glDrawArrays(GL_TRIANGLES, 0, M4GunNumVerts); 

Когда я бегу, я не могу видеть модель. Я создал окно с избытком и сделал треугольник, чтобы увидеть, рисуются ли фигуры, и появился треугольник. Я не знаю, как это исправить, поэтому я вижу модель.

Вот функция Reshape

glMatrixMode(GL_PROJECTION); 

glLoadIdentity(); 

glViewport(0, 0, w, h); 

gluPerspective(45, ratio, 0.01, 1000); 

glMatrixMode(GL_MODELVIEW); 

Может кто-нибудь помочь?

+1

Вы не предоставили достаточную информацию, чтобы ответить на этот вопрос. Координатные пространства очень важны в OpenGL, не зная ваших матриц проекции и модели, любое количество вещей может быть неправильным. Кроме того, вы не включили указатели массива вершин в минимальном фрагменте кода, который вы предоставили. Пожалуйста, предоставьте больше кода, который включает в себя обе эти вещи. –

+0

Я включил точки массива вершин, но я не включил его.И я добавил код. –

+0

@DavidGraovac: Пожалуйста, не используйте такие вещи, как конвертеры «obj to h». Вместо этого используйте библиотеку типа ASSIMP для загрузки данных модели из файла. – datenwolf

ответ

0

Либо:

  • не позволяют правильно массивы
  • и или ваш взгляд камеры в неправильном направлении к объекту
  • и или ваша камера находится внутри объекта. (в то время как CULL_FACE включен)
  • и/или неправильно или вообще нет glColor !!! (Не может видеть черный на черном)
  • и или забыть связать текстуру (в то время как включена)
  • и или неправильно glTexCoord (пока включен)
  • и или неправильно установленные огни (в то время как включен)
  • и или неправильно перспектива относительно расстояния до объекта и размера (вид angle,znear,zfar)
  • если объект является плоским и вы смотрите на тонкой стороне ...

некоторых намеков:

Попытайтесь повернуть камеру вокруг сцены (идеально с некоторыми клавишами, такими как стрелки и посмотреть, находится ли объект позади ... или перетаскивание мышью ...). Также попробуйте переместить камеру вперед/назад (также можно использовать клавиши, но мой любимый - колесико мыши).

Сначала используйте glBegin() glVertex() glEnd(), чтобы избежать проблем с неправильно включенными массивами и начать без освещения, текстуры, CULL_FACE ing (их отключить !!!). Когда вы видите свою модель, включите все поэтапно, чтобы понять, что не так. В конце концов, тогда попробуйте массивы.

Если объект кажется неправильно о в то время как CULL_FACE включена, то ваша обмотка правило неверно (CW/CCW) можно увидеть в основном в то время как вращающийся объект

здесь simple OpenGL scene app in BDS2006 вы можете использовать его в качестве испытания окна и камеры/параметры матрицы модели

Смежные вопросы