Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Правильное отображение текстуры в OpenGL? 
V
    Опции темы
REPO
Дата 13.4.2006, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Доброго времени суток!

Помогите!!
Проблема с отображением двух треугольников как квадрата.
Загрузив текстуру, прописываю в функции display() слудующее:

Код

    glBegin(GL_TRIANGLES);
        glTexCoord2f(0,0); glVertex3f(0,0,0);
        glTexCoord2f(1,0); glVertex3f(1,0,0);
        glTexCoord2f(1,1); glVertex3f(1,1,0);

        glTexCoord2f(1,1); glVertex3f(1,1,0);
        glTexCoord2f(0,1); glVertex3f(0,1,0);
        glTexCoord2f(0,0); glVertex3f(0,0,0);
    glEnd();


А потом тоже самое повернув камеру. На второй картинке (см. изображение) ровные линии получаются изогнутыми!!? smile
Как это исправить?

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  image.jpg 63,95 Kb
PM MAIL   Вверх
Goliath
Дата 14.4.2006, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: 1
Всего: 5



Как ты работаешь с камерой? Такие искажения бывают, если камеру пишешь с нуля. Выложи полный код.
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
REPO
Дата 14.4.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Так выглядит код для второго изображения:

Код


#include <conio.h>
#include <iostream.h>

#include "glmodelut.h"

#include <GL/glut.h>
#include <GL/glaux.h>




unsigned int photo_tex;
AUX_RGBImageRec* photo_image;





void display (void)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_TEXTURE_2D);

    glRotatef(25,0,1,0);
    glRotatef(25,-1,0,0);
    
    glBegin(GL_TRIANGLES);
        glTexCoord2f(0,0); glVertex3f(0,0,0);
        glTexCoord2f(1,0); glVertex3f(1,0,0);
        glTexCoord2f(1,1); glVertex3f(1,1,0);

        glTexCoord2f(1,1); glVertex3f(1,1,0);
        glTexCoord2f(0,1); glVertex3f(0,1,0);
        glTexCoord2f(0,0); glVertex3f(0,0,0);
    glEnd();

    glutSwapBuffers();
}



void init (void)
{
  glClearColor (0.0, 0.0, 0.0, 0.0);
   glShadeModel(GL_FLAT);
   glEnable(GL_DEPTH_TEST);


    GLfloat light_ambient[] = { 1.0, 1.0, 1.0, 1.0 };
    GLfloat light_diffuse[] = { 0.7, 0.7, 0.7, 1.0 };
    GLfloat lmodel_ambient[] = { 1.0, 1.0, 1.0, 1.0 };

    glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
    glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
    glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient);

    glEnable(GL_LIGHT0);
    glEnable(GL_LIGHTING);

  glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

  photo_image = auxDIBImageLoad("plitka_strip.bmp");

  glGenTextures(1, &photo_tex);

    glBindTexture(GL_TEXTURE_2D, photo_tex );
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

    glTexImage2D(GL_TEXTURE_2D, 0, 3, 
                 photo_image->sizeX,
                 photo_image->sizeY,
                 0, GL_RGB, GL_UNSIGNED_BYTE,
                 photo_image->data);

}


void reshape(int w, int h)
{
   glViewport(0, 0, (GLsizei) w, (GLsizei) h);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   gluPerspective(80.0, (GLfloat) w/(GLfloat) h, 0.1, 1000.0);
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   gluLookAt(    0,0,2,    0,0,0,        0,1,0    );
}


int main(int argc, char **argv)
{
  glutInit(&argc, argv);
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  glutInitWindowSize (500, 500);
  glutCreateWindow("TEST");

  glutReshapeFunc(reshape);
  glutDisplayFunc(display);
  init();
  glutMainLoop();
  return 0;           
}

 :qstn 



PM MAIL   Вверх
DENNN
Дата 14.4.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 3878
Регистрация: 27.3.2002
Где: Москва

Репутация: 3
Всего: 43



А если вот так:

Код

void display (void)
{
glMatrixMode (GL_PROJECTION);

       glFlush();
        glDrawBuffer (GL_BACK);      // draws to both left and right buffers
        glClearColor(0.2f, 0.2f, 0.2f, 0.0f);  
        glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glEnable(GL_TEXTURE_2D);
 
        glPushMatrix();
glLoadIdentity(); 
gluPerspective(50,1,0,50);
   glRotatef(25,0,1,0);
    glRotatef(-25,1,0,0);
  
 
    
    glBegin(GL_TRIANGLES);
        glTexCoord2f(0,0); glVertex3f(0,0,0);
        glTexCoord2f(1,0); glVertex3f(1,0,0);
        glTexCoord2f(1,1); glVertex3f(1,1,0);
        glTexCoord2f(1,1); glVertex3f(1,1,0);
        glTexCoord2f(0,1); glVertex3f(0,1,0);
        glTexCoord2f(0,0); glVertex3f(0,0,0);
    glEnd();

glPopMatrix();
glFlush();
    glutSwapBuffers();
}


Это сообщение отредактировал(а) DENNN - 14.4.2006, 11:17
PM ICQ   Вверх
REPO
Дата 14.4.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Если заменить display(), то сначала не показывает ничего, а если изменить gluPerspective(50, 1, 0.1, 50); , результат тотже smile
PM MAIL   Вверх
Goliath
Дата 14.4.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: 1
Всего: 5



Выложи текстуру попробую у себя с твоей текстурой.
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
REPO
Дата 14.4.2006, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Вот. Только надо перевести ее в .bmp, а то glaux .jpg не грузит.

Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  plitka_strip.jpg 94,06 Kb
PM MAIL   Вверх
Goliath
Дата 15.4.2006, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 246
Регистрация: 1.3.2005

Репутация: 1
Всего: 5



К сожалению, у меня под руками нету Си, я на данный момент просто работаю с OpenGL на Java. Я перевел твой код и у меня все работает нормально, единственное, что хочу отметить сама текстура делать оптический обман изогнутости. Попробуй поменять текстуру и посмотреть. Если также будить я возьму си и попробую под Си.
--------------------
Наша жизнь растрачивается на мелочи… Упрощайте, упрощайте. [Генри Торо] 
PM MAIL   Вверх
REPO
Дата 16.4.2006, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.3.2006

Репутация: нет
Всего: нет



Все оказалось проще. Вообщем если ты тоже хочешь чтобы у тебя все работало как у меня, - надо удалить драйвер NVidia (или другой видеокарты...)  smile  Тогда OpenGL, скорей всего, работает на программном ускорении и рисует треугольники не учитывая перспективу.

А как я установил новый драйвер (не тот что дает winXP), эту же текстуру показал нормально.  smile Так что Майкрософт только навредил излишней заботливостью!! (а еслиб я не догадался драйвер проверить..?!!) 
PM MAIL   Вверх
danie
Дата 28.11.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 28.11.2006

Репутация: нет
Всего: нет



А коррекция перспективы не может исправлять такой эффект? Есть же режим коррекции перспективы при наложении текстуры.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.