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

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

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2011, 21:29   #1
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
Сообщение libpng, libjpeg, или ещё что-то

Дайте исходник програмы на Си с загрузкой текстуры с помощью libpng, зарание спасибо... я щя здохну, ничего не выходит...
и если не знаете как libpng, то напишите как на libjpeg... или ещё на чем-то!

И ОЧЕНЬ ПРОШУ ОТВЕЧАЙТЕ ХОТЬ ЧТО-ТО, ЧТОБЫ Я ЗНАЛ ЧТО Я ЗДЕСЬ НЕ ОДИН :mad
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 17.07.2011, 00:17   #2
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

ну что за *****!!!
16 просмотров и 0 ответов, ЛЮДИ ХОТЬ ПОФЛУДИТЕ! ПООБЗЫВАЙТЕ АВТОРА ИДИОТОМ, КАК ВЫ ЛЮБИТЕ! СНИЗЬТЕ РЕПУТАЦИЮ
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 17.07.2011, 00:29   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ну раз вы так просите
netrino вне форума Ответить с цитированием
Старый 17.07.2011, 00:53   #4
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

смотрел я там... ну libpng примеры по 1к (1000) строк... и нихе**не понятно... а в libjpeg, нашол, так пишет
Цитата:
C:\Antimatter 3D\Antimatter\Untitled1.c||In function 'main':|
C:\Antimatter 3D\Antimatter\Untitled1.c|59|warnin g: implicit declaration of function 'read_JPEG_file'|
C:\Antimatter 3D\Antimatter\Untitled1.c|49|warnin g: unused variable 'id'|
C:\Antimatter 3D\Antimatter\Untitled1.c|135|warni ng: control reaches end of non-void function|
obj\Debug\Untitled1.o||In function `main':|
C:\Antimatter 3D\Antimatter\Untitled1.c|59|undefi ned reference to `read_JPEG_file'|
||=== Build finished: 1 errors, 3 warnings ===|
хотя libjpeg.dll.a подключил и #include <jpeglib.h>
#include <jerror.h>
#include <jmorecfg.h>
#include <jconfig.h> стоят...
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 17.07.2011, 01:01   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Вот здесь не 1000 строк, всё красиво оформлено и разделено на небольшие функции и отлично компилируется.
Вот тут да, многовато, но большую часть исходника занимают комментарии, а не сам код
netrino вне форума Ответить с цитированием
Старый 17.07.2011, 01:05   #6
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

я просто был нашол пример от авторов либы, так там 1400 строк... нормальный пример, правда?

ну ладно щя буду спрашивать что-то непонятное здесь:
http://zarb.org/~gc/html/libpng.html
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 17.07.2011, 01:33   #7
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

ну хорошо с libpng ничего не выйдет... там тяжолый код... я не вьехал... пнглистам тяжело было сделать как в libjpeg? я нашол раньше пример для libjpeg, но он не работал, выбивало ошибку ... уй блин, я потерял свой код когда этот копировал, больше контрл зед не робит! {ой!}

НУ ТО ЗА {ой!} ВЕСЬ ДЕНЬ (и наверное так будет ещё неделю...)


вобшим у меня такая ошибка в libjpeg:

пишет что не понимает функции (точно не помню как она пишется) read_image (ну что-то наподобе этого), как будто я libjpeg.dll.a не подключил... хотя все подключено и инклюды стоят




ФУХ, ЕСТЬ СТАРАЯ ВЕРСИЯ В ТЕМЕ http://programmersforum.ru/showthread.php?t=160326










___________________________________ __________


Все что выше написано частично устарело
такая ошибка в libjpeg

C:\Antimatter 3D\Antimatter\Untitled1.c||In function 'main':|
C:\Antimatter 3D\Antimatter\Untitled1.c|59|warnin g: implicit declaration of function 'read_JPEG_file'|
C:\Antimatter 3D\Antimatter\Untitled1.c|49|warnin g: unused variable 'id'|
C:\Antimatter 3D\Antimatter\Untitled1.c|135|warni ng: control reaches end of non-void function|
obj\Debug\Untitled1.o||In function `main':|
C:\Antimatter 3D\Antimatter\Untitled1.c|59|undefi ned reference to `read_JPEG_file'|
||=== Build finished: 1 errors, 3 warnings ===|

либы подключены, инклюды написаны... компилю MinGW+CODEBLOCKS
Это ещё не конец и даже не начало конца, это возможно только конец начала.

Последний раз редактировалось Beermonza; 17.07.2011 в 15:43.
pufystyj вне форума Ответить с цитированием
Старый 17.07.2011, 15:34   #8
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

pufystyj, перестаньте себя вести подобным образом. Никто вам ничего не должен и выпрашивать, используя верхний регистр это вообще бессовестно с вашей стороны. Ознакомьтесь с правилами форума на главной странице. Если так дальше пойдет, с применением слов, недопустимых на цивилизованном форуме, то нарветесь на бан, и уж тогда потом без недоумения "за что?".
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 19.07.2011, 03:10   #9
pufystyj
Форумчанин
 
Аватар для pufystyj
 
Регистрация: 10.11.2010
Сообщений: 569
По умолчанию

всеем спасиба, простите за недоразумения... больше не буду.
глаукс подошол
Это ещё не конец и даже не начало конца, это возможно только конец начала.
pufystyj вне форума Ответить с цитированием
Старый 21.07.2011, 13:43   #10
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Код:
#include <windows.h>
#include <GL/gl.h>
#include "png.h"

 void PNGReadFileFunction(png_structp png_ptr, png_bytep data, png_size_t length)
{
	HANDLE pFile = png_get_io_ptr(png_ptr);
	DWORD RW;
	ReadFile ( pFile, data, length, &RW, NULL);
}
// Загрузить текстуру из файла *.png
 bool LoadFromPNGFile ( const char * filename,
                 GLubyte *&texture,
		 GLuint *texName,
		 GLint filter =GL_LINEAR)
{
   HANDLE hFile;
   DWORD RW;
   hFile = CreateFileA ( filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
	if (hFile == INVALID_HANDLE_VALUE)
	   return false;

   png_structp   png_ptr; 
   png_infop     info_ptr;       
   unsigned char   sig[8];          

   int           bit_depth;
   int           color_type;
   png_uint_32 twidth; 
   png_uint_32 theight;   
   unsigned int rowbytes; 
   GLsizei width, height;

   bool hasAlpha =false;
   int i;
   png_bytepp row_pointers = NULL;

   ReadFile ( hFile, sig, 8, &RW, NULL);
	 if (!png_check_sig( sig, 8)) 
	{
	   CloseHandle(hFile);
	  return false;
	}
 
   /* 
    * Set up the PNG structs 
    */
   png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
   if (!png_ptr) {
      CloseHandle( hFile);
      return false;    /* out of memory */
   }
 
   info_ptr = png_create_info_struct(png_ptr);
   if (!info_ptr) {
      png_destroy_read_struct(&png_ptr, (png_infopp) NULL, (png_infopp) NULL);
      CloseHandle( hFile);
      return false;    /* out of memory */
   }

   if (setjmp(png_jmpbuf(png_ptr))) {
      png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
      CloseHandle( hFile);
      return false;    /* out of memory */
   }

   	// настраиваем библиотеку на наш способ чтения файла
	// указатель на hFile можно будет получить потом в PNGReadFileFunction
   png_set_read_fn(png_ptr, hFile, PNGReadFileFunction);

	// говорим библиотеке, что мы уже прочли number байт, когда проверяли сигнатуру
   png_set_sig_bytes(png_ptr, 8);
   
   /* read all the info up to the image data */
   png_read_info(png_ptr, info_ptr);
   png_get_IHDR(png_ptr, info_ptr, &twidth, &theight, &bit_depth, 
	&color_type, NULL, NULL, NULL);

   // png формат может содержать 16 бит на канал, но нам нужно только 8, поэтому сужаем канал
   if (bit_depth > 8) {
      png_set_strip_16(png_ptr);
   }
   if (color_type == PNG_COLOR_TYPE_GRAY ||
       color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
      png_set_gray_to_rgb(png_ptr);
   }
   if (color_type == PNG_COLOR_TYPE_PALETTE)
    {
       png_set_palette_to_rgb(png_ptr);
    }

  // после всех трансформаций, апдейтим информацию в библиотеке
  png_read_update_info(png_ptr, info_ptr);
  // опять получаем все размеры и параметры обновленной картинки
  png_get_IHDR(png_ptr, info_ptr, &twidth, &theight, &bit_depth, &color_type, 0, 0, 0);
  width = twidth;
  height = theight;
  // Если есть альфа, то включаем флаг альфа канала
   if (color_type & PNG_COLOR_MASK_ALPHA) {
	  hasAlpha =true;
   }
   /* Rowsize in bytes. */
   rowbytes = png_get_rowbytes(png_ptr, info_ptr);

   /* Allocate the image_data buffer. */
   if (( texture = new png_byte [rowbytes * height]) == NULL) {
      png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
      CloseHandle( hFile);
      return false; 
    }

   if ((row_pointers = new png_bytep [ height * sizeof(png_bytep)]) == NULL) {
        png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
        delete[] texture;
        texture = NULL;
        CloseHandle( hFile);
        return false; 
    }

    /* set the individual row_pointers to point at the correct offsets */
    for (i = 0;  i < height;  ++i)
        row_pointers[/*height - 1 -*/ i] = texture + i*rowbytes;

    /* now we can go ahead and just read the whole image */
    png_read_image(png_ptr, row_pointers);

    /* and we're done!  (png_read_end() can be omitted if no processing of
     * post-IDAT text/time/etc. is desired) */

   /* Clean up. */
   delete[] row_pointers; // free row_pointers;
   png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
   CloseHandle( hFile);

    glShadeModel ( GL_FLAT);
    glEnable ( GL_DEPTH_TEST);
    glPixelStorei ( GL_UNPACK_ALIGNMENT, 1);
    glGenTextures ( 1, texName);
    glBindTexture ( GL_TEXTURE_2D, *texName);
    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filter);
    glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filter);
    glTexImage2D ( GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, hasAlpha ? GL_RGBA : GL_RGB, GL_UNSIGNED_BYTE, texture);

  return true;
}
Вот примерчик написала, правда форум ругается, что текст слишком длинный
An1ka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать тест в Delphi и ещё кое что (((sheva))) Общие вопросы Delphi 1 22.04.2011 16:22
Проблема с IWMHeaderInfo3 или что-то ещё... g-davicelli Мультимедиа в Delphi 4 30.03.2011 14:07
Счётчик кликов (IP, Cookies или что то ещё?) amdbodia PHP 2 20.02.2010 13:41
libpng и jpeglib DmT Qt и кроссплатформенное программирование С/С++ 2 16.12.2008 15:29