Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.09.2010, 19:54   #1
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию универсальная функция

всем привет
тут такой вопрос
как написать универсальную функцию загрузки текстуры в OpenGL??

тоесть надо сделать в итоге примерно так:
имя текстыры = загрзка текстуры(путь)
texture = LoadTexture("texture.bmp");
примерно так
и потом используем glBindTexture(GL_TEXTURE_2D, texture);
и еще

как текстурировать много предметов?
тоесть я указываю текстуру и пишу загрузку модели
а если мне не надо указывать текстуру?? тоесть я нарисовал текстуру а для следующей мне не надо?? то как тогда?
jec вне форума Ответить с цитированием
Старый 05.09.2010, 19:54   #2
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

а ну еще забыл написать
использую SDL
так что если можно то в нем

Последний раз редактировалось jec; 05.09.2010 в 19:59.
jec вне форума Ответить с цитированием
Старый 05.09.2010, 21:03   #3
blob
Пользователь
 
Регистрация: 24.08.2010
Сообщений: 34
По умолчанию эх молодёж :)

Вот те класс для текстур. Спасибо Vegar Kleppe. Вообще советую всё скрывать в классах. У мня, к примеру, целая библиотека самописная. Если надо, в личку пиши поделюсь
Вложения
Тип файла: rar openGLlib.rar (3.8 Кб, 8 просмотров)
blob вне форума Ответить с цитированием
Старый 05.09.2010, 21:09   #4
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

о круто спасибо
а по чем библиотека самописная??

чет почитал код и не разобрался как такое написал, решил сам что нить изобрести
и тут у меня проблемка
путь к файлу задал нормально а вот имя не получается
пишу так:

GLuint texture[1];

Код:
int LoadGLTextures(GLuint name, const char *filename)
{
  int Status = FALSE;
  SDL_Surface *TextureImage[1]; 
  
  if((TextureImage[0] = SDL_LoadBMP(filename)))
    {
      Status = TRUE;
      glGenTextures(1, &name);
      glBindTexture(GL_TEXTURE_2D, name);
      glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->w, TextureImage[0]->h,
		   0, GL_BGR, GL_UNSIGNED_BYTE, TextureImage[0]->pixels);
      
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    }
  
  if(TextureImage[0])
    SDL_FreeSurface(TextureImage[0]);
  
  return Status;
}
Код:
LoadGLTextures(texture[0], "nehe.bmp");
Код:
Код:
glBindTexture(GL_TEXTURE_2D, texture[0]);
но не работает =(

Последний раз редактировалось Stilet; 06.09.2010 в 08:39.
jec вне форума Ответить с цитированием
Старый 05.09.2010, 22:27   #5
blob
Пользователь
 
Регистрация: 24.08.2010
Сообщений: 34
По умолчанию

адрес говори. Так вышлю. Писал под glut. Создаёшь объекты и добавляешь в сцену. Поковыряешься..разберёшься
blob вне форума Ответить с цитированием
Старый 06.09.2010, 02:38   #6
jec
Пользователь
 
Регистрация: 04.09.2010
Сообщений: 42
По умолчанию

jec19@mail.ru
но это почтовик, тоесть я там никогда не бываю
а не проще сида льнуть код?

а не надо уже
написал как то =))
но почему то работает плохо такая ситуация
вот код загрузки:

Код:
GLuint LoadTextures(const char *filename)
{
  SDL_Surface *TextureImage; 
  unsigned int name;
  
  if((TextureImage = SDL_LoadBMP(filename)))
    {
      glGenTextures(1, &name);
      glBindTexture(GL_TEXTURE_2D, name);
      glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->w, TextureImage->h,
		   0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage->pixels);
      
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    }
  
  if(TextureImage)
    SDL_FreeSurface(TextureImage);
  return name;
}
Код:
unsigned int tex;
tex = LoadTextures("nehe.bmp");
  
  glBindTexture(GL_TEXTURE_2D, tex);
все грузит и рисует но рисует мягко коворя плохо
вот скрин


а должна быть синей
как быть??

решил вопрос
надо было написать GL_BGR вместо GL_RGB
но тут вопрос а в чем разница та??

Последний раз редактировалось Stilet; 06.09.2010 в 08:39.
jec вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
распаковка JPEG на C. Нужна универсальная функция Marcel Общие вопросы C/C++ 14 23.06.2010 10:18
универсальная программа для форумов !!! designer999 Фриланс 1 10.03.2010 21:47
Универсальная функция для действия над матрицами devl Общие вопросы C/C++ 10 30.01.2010 18:49
универсальная программа на C++ Xeon332 Помощь студентам 4 27.01.2009 04:07
Универсальная защита Simply-Art Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 04.10.2007 10:02