Forth
http://www.fforum.winglion.ru/

IUP и OPENGL
http://www.fforum.winglion.ru/viewtopic.php?f=2&t=3271
Страница 2 из 2

Автор:  Victor__v [ Пт июн 26, 2020 07:07 ]
Заголовок сообщения:  Re: IUP и OPENGL

Короче, зря я скачивал эту библиотеку Mesa3D, ошибка в ней.
Применив особое шаманство с помощью функции wglGetProcAddress, я смог получить нужные функции из стандартного OPENGL32
И шейдеры начали компилироваться.
Так узрите, великий оранжевый треугольник сделанный на сером фоне :dmad; :dmad; :dmad;
Изображение

Вот не любят люди говорить очевидные вещи для тех, кто программирует на низком/среднем уровне.

Что надо сделать, чтобы получить нужные функции из OPENGL32 версии 3 и выше?

А надо из OPENGL32.DLL вызвать wglGetProcAddress, которой надо скормить ANSII-строку с именем функции например glCreateShader
получить тем самым указатель на функцию и написать обертку вокруг него.
Ах да, указатель на нужную функцию можно получить только при определении контекста openGL

Короче, для форта ничего сложного.

Автор:  Hishnik [ Пт июн 26, 2020 14:24 ]
Заголовок сообщения:  Re: IUP и OPENGL

В полку 3D-фортов прибыло! :pilot;

Автор:  Victor__v [ Пт июн 26, 2020 14:34 ]
Заголовок сообщения:  Re: IUP и OPENGL

Hishnik писал(а):
В полку 3D-фортов прибыло! :pilot;

Только впереди еще куча примеров-уроков.

Да и я, если честно, треть не понял из того кода, что перевел с Си на форт :)

Автор:  KPG [ Пт июн 26, 2020 16:55 ]
Заголовок сообщения:  Re: IUP и OPENGL

Victor__v писал(а):
Hishnik писал(а):
В полку 3D-фортов прибыло! :pilot;

Только впереди еще куча примеров-уроков.

Да и я, если честно, треть не понял из того кода, что перевел с Си на форт :)


А какой первоисточник примеров?
И, под SPF4 запускаются?

P.S. Сам только запускал и смотрел примеры NeHeLessonsIn4th перенесённые под Win32Forth размещённые здесь (немного пришлось подправить версию Win32Forth, чтобы они запустились) и под Андроидом вращающийся треугольник из gForth для него (Упомянут в этой теме. :)

Автор:  Hishnik [ Пт июн 26, 2020 19:02 ]
Заголовок сообщения:  Re: IUP и OPENGL

Victor__v писал(а):
Да и я, если честно, треть не понял из того кода, что перевел с Си на форт

Может выявиться проблема, что все программирование становится похоже на повторение в Форте уже существующего в Си. Получится "то же самое, но на Форте". А надо бы получить какие-то заметные отличия, чтобы пользоваться этим можно было иначе, удобнее для программиста.

Автор:  Victor__v [ Пт июн 26, 2020 19:24 ]
Заголовок сообщения:  Re: IUP и OPENGL

Hishnik писал(а):
Может выявиться проблема, что все программирование становится похоже на повторение в Форте уже существующего в Си. Получится "то же самое, но на Форте". А надо бы получить какие-то заметные отличия, чтобы пользоваться этим можно было иначе, удобнее для программиста.


Сейчас моя подцель просто понять как это все работает.
В чем преимущество уроков на Си https://learnopengl.com/ , так это в том, что там нет всяких упрощений.
А так свой удобный "фреймворк по OpenGL" на форте можно написать, но для этого неплохо было бы изучить предмет не так ли?

Автор:  Victor__v [ Пт июн 26, 2020 19:45 ]
Заголовок сообщения:  Re: IUP и OPENGL

KPG писал(а):
А какой первоисточник примеров?
И, под SPF4 запускаются?

См. в предыдущем сообщении.
Не пробовал.
Нова в этом деле, ИМХО, удобнее :lol:
Вот отдельная папочка для тестов.

Вложения:
OPENGL-LES1.7z [84.21 Кб]
Скачиваний: 48

Автор:  Total Vacuum [ Вт июн 30, 2020 15:28 ]
Заголовок сообщения:  Re: IUP и OPENGL

Кстати, а почему в примере используются разные варианты написания поллитры (0.5 и 0,5)? Или Nova оба варианта одинаково понимает?

Автор:  Victor__v [ Вт июн 30, 2020 15:35 ]
Заголовок сообщения:  Re: IUP и OPENGL

Total Vacuum писал(а):
Кстати, а почему в примере используются разные варианты написания поллитры (0.5 и 0,5)? Или Nova оба варианта одинаково понимает?

Я реализовал так в либе вещественных чисел чисто для удобства.

Автор:  Victor__v [ Ср июл 01, 2020 13:31 ]
Заголовок сообщения:  Re: IUP и OPENGL

Вопрос по текстурам.

Как их собственно загрузить, чтоб OpenGL понимал?
Просто в примеры используются сторонние либы.
Знает ли кто-нибудь DLL для загрузки png, например, в память, чтоб OpenGL прочел?
А то на форуме только пример с bmp видел с загрузкой в ручном режиме от Хищника :)

Автор:  KPG [ Ср июл 01, 2020 14:04 ]
Заголовок сообщения:  Re: IUP и OPENGL

Victor__v писал(а):
Вопрос по текстурам.
Знает ли кто-нибудь DLL для загрузки png, например, в память, чтоб OpenGL прочел?)

Может использовать стороннюю библиотеку, например freeimage.dll для получения битмапа, а его уже загружать в OpenGL?

P.S. Freeimage.dll используется в Win32Forth и форумчанин F-MAP давал ссылку на использование её в своей кадастровой CAD системе F-MAP (сделана на SPF4).
У ~yz на персональной страничке сайта forth.org.ru был пример печати несколько картинок на одном листе TIFF - tprint

Автор:  Hishnik [ Ср июл 01, 2020 17:40 ]
Заголовок сообщения:  Re: IUP и OPENGL

Victor__v писал(а):
Знает ли кто-нибудь DLL для загрузки png, например, в память, чтоб OpenGL прочел?

OpenGL файлы не читает. Текстура задается в памяти в одном из RGB-форматов, bmp тут просто удобнее, потому что можно пропустить заголовок и получить те самые несжатые пиксельные данные.

Автор:  zma [ Ср июл 01, 2020 21:07 ]
Заголовок сообщения:  Re: IUP и OPENGL

Для чтения различных форматов файлов изображений есть библиотека IM. Можно загрузить какой-нибудь JPEG и получить битмап в памяти, который уже и скормить OpenGL

Автор:  F-MAP [ Ср июл 01, 2020 22:28 ]
Заголовок сообщения:  Re: IUP и OPENGL

KPG писал(а):
Victor__v писал(а):
Вопрос по текстурам.
Знает ли кто-нибудь DLL для загрузки png, например, в память, чтоб OpenGL прочел?)

Может использовать стороннюю библиотеку, например freeimage.dll для получения битмапа, а его уже загружать в OpenGL?

P.S. Freeimage.dll используется в Win32Forth и форумчанин F-MAP давал ссылку на использование её в своей кадастровой CAD системе F-MAP (сделана на SPF4).
У ~yz на персональной страничке сайта forth.org.ru был пример печати несколько картинок на одном листе TIFF - tprint


freeimage.dll достаточно просто использовать для загрузки любых форматов. Использую такой вариант для вывода картинок на SPF4:
Код:
\  Test 09.09.2010 13:15:13
WINAPI: _FreeImage_Initialise@4   FreeImage.dll
WINAPI: _FreeImage_DeInitialise@0 FreeImage.dll
WINAPI: _FreeImage_GetFileType@8  FreeImage.dll
WINAPI: _FreeImage_Load@12        FreeImage.dll
WINAPI: _FreeImage_Save@16        FreeImage.dll
WINAPI: _FreeImage_Unload@4       FreeImage.dll
WINAPI: _FreeImage_GetWidth@4         FreeImage.dll
WINAPI: _FreeImage_GetHeight@4        FreeImage.dll
WINAPI: _FreeImage_GetVersion@0       FreeImage.dll
WINAPI: _FreeImage_GetInfo@4          FreeImage.dll
\ WINAPI: _FreeImage_GetMemorySize@4    FreeImage.dll

: Bi->pal \ размер палитры
hdib biClrUsed @ ?DUP IF EXIT THEN
hdib biBitCount W@
DUP 1 = IF DROP 2 ELSE
DUP 4 = IF DROP 16 ELSE
    8 = IF 256  ELSE
    0 THEN THEN THEN
;

\ Вставить картинку из файла на metadc
\ например в форму  c масштабированием

: Picture { fa fu x y h w \ f rw rh -- }  \ fa fu - путь к файлу
                                      \ x - с верху до верх-левого угла
fu IF                                \ y - слева   до верх-левого угла
                                     \ h - раст. от верха до низа рисунка
                                     \ w - ширина рисунка


0 fa      _FreeImage_GetFileType@8
0 fa ROT _FreeImage_Load@12  -> f
f IF
f _FreeImage_GetWidth@4 -> rw
f _FreeImage_GetHeight@4 -> rh
f _FreeImage_GetInfo@4 TO hdib  \ заголовок dib
  hdib DUP @ + Bi->pal  4 * + TO datdib \ данные

  COLORONCOLOR    metaDC SetStretchBltMode
  SRCCOPY DIB_RGB_COLORS hdib datdib  rh rw   0 0
  h w  x  y
  metaDC StretchDIBits DROP
         metaDC SetStretchBltMode DROP

  f _FreeImage_Unload@4  DROP
  THEN
   THEN
;

Страница 2 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/