Forth http://fforum.winglion.ru/ |
|
IUP и OPENGL http://fforum.winglion.ru/viewtopic.php?f=2&t=3271 |
Страница 1 из 2 |
Автор: | Victor__v [ Ср июн 24, 2020 03:18 ] |
Заголовок сообщения: | IUP и OPENGL |
Пытался вкурить пример по IUP с GL перевел на форт, но вместо вожделенного квадрата там только тьма https://github.com/LuaDist/iup-examples ... glcanvas.c Версия на форте (Nova) Код: 2 Cdecl: IupOpen Iup 2 Cdecl: IupButton Iup 0 Cdecl: IupClose Iup 0 Cdecl: IupFill IUP 1 Cdecl: IupLabel Iup 1 Cdecl: IupDialog Iup 1 Cdecl: IupHide Iup N-Cdecl: IupVbox Iup N-Cdecl: IupHbox Iup 1 Cdecl: IupShow Iup 3 Cdecl: IupSetAttribute Iup 4 Cdecl: IupGetIntInt IUP 2 Cdecl: IupGetAttribute IUP 0 Cdecl: IupMainLoop Iup 3 Cdecl: IupSetCallback Iup 0 Cdecl: IupGLCanvasOpen IupGL 1 Cdecl: IupGLCanvas IupGL 1 Cdecl: IupGLMakeCurrent IupGL 1 Cdecl: IupGLIsCurrent IupGL 1 Cdecl: IupGLSwapBuffers IupGL WINAPI: glDrawPixels OPENGL32 WINAPI: glViewport OPENGL32 WINAPI: glMatrixMode OPENGL32 WINAPI: glLoadIdentity OPENGL32 WINAPI: glClearColor OPENGL32 WINAPI: glClear OPENGL32 WINAPI: glColor3i OPENGL32 WINAPI: glVertex3i OPENGL32 WINAPI: glVertex2i OPENGL32 WINAPI: glVertex2f OPENGL32 WINAPI: glBegin OPENGL32 WINAPI: glEnd OPENGL32 WINAPI: glOrtho OPENGL32 \ создать константную строку для удобства : W-CONST ALT: HERE >R >IN @ >R PARSE-NAME ALT: S, 0 ALT: C, R> >IN ! R> CONSTANT ; W-CONST SIZE W-CONST TITLE W-CONST ACTION W-CONST Yes W-CONST SCROLLBAR W-CONST DOUBLE W-CONST BUFFER -2 CONSTANT IUP_DEFAULT \ ~ER/LOCALS/R-LOCAL.F CONTEXT @ ALT: TEMP-OUT REQUIRE FLOAT ~ER/FLOAT/FLOAT.F ALSO FLOAT ' PREVIOUS >R 1 CALLBACK: BLA @ { CANVAS } SP@ >R CANVAS IupGLMakeCurrent 123 200 0 0 glViewport 1 1 1 1 glClearColor 0x4000 0x100 OR glClear 100 0 30 glColor3i 0x0007 glBegin \ квадрат \ через целые тоже пробовал, все равно не работает 0.9 0.9 glVertex2f 0.9 -0.9 glVertex2f -0.9 -0.9 glVertex2f -0.9 0.9 glVertex2f glEnd CANVAS IupGLSwapBuffers R> SP! IUP_DEFAULT ; : TEST { \ CANVA DLG HB } 0 0 IupOpen THROW IupGLCanvasOpen DROP 0 IupGLCanvas TO CANVA S" 123x200" DROP S" RASTERSIZE" DROP CANVA IupSetAttribute DROP DOUBLE BUFFER CANVA IupSetAttribute DROP ['] BLA ACTION CANVA IupSetCallback DROP 0 IupFill CANVA IupFill 4 IupHbox TO HB HB IupDialog TO DLG S" GL-TEST" DROP TITLE DLG IupSetAttribute DROP S" 300x300" DROP SIZE DLG IupSetAttribute DROP DLG IupShow IupMainLoop THROW IupClose THROW ; TEST Вот почему не работает? |
Автор: | zma [ Ср июн 24, 2020 11:59 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Может, ['] BLA передавать при создании glcanvas? Он вообще вызывается? |
Автор: | Victor__v [ Ср июн 24, 2020 14:04 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Вызывается он, отдельно проверял этот каллбек Все как и в примере на Сях |
Автор: | Hishnik [ Ср июн 24, 2020 18:26 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
0.9 0.9 glVertex2f А если тут через вектор? У OpenGL свои отношения со стеком, лучше передавать указатель на массив. Т.е. glVertex2dv |
Автор: | Victor__v [ Ср июн 24, 2020 18:52 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Hishnik писал(а): 0.9 0.9 glVertex2f А если тут через вектор? У OpenGL свои отношения со стеком, лучше передавать указатель на массив. Т.е. glVertex2dv В смысле? Непонятно откуда значения брать будет? Толи с FPU толи со стека возвратов? |
Автор: | Victor__v [ Ср июн 24, 2020 21:22 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Сейчас с freeglut начал тестировать та же проблема. В общем, Хищник прав Лучше использовать массивы. У меня отчего-то glColor3i тупо не работал. стоило заменить glColor3f и закинуть флоаты на стек данных, как сразу все нарисовалось Код: WINAPI: glutInit FREEGLUT
WINAPI: glutInitDisplayMode FREEGLUT WINAPI: glutInitWindowSize FREEGLUT WINAPI: glutInitWindowPosition FREEGLUT WINAPI: glutCreateWindow FREEGLUT WINAPI: glutReshapeFunc FREEGLUT WINAPI: glutDisplayFunc FREEGLUT WINAPI: glutSwapBuffers FREEGLUT WINAPI: glutMainLoop FREEGLUT WINAPI: glDrawPixels OPENGL32 WINAPI: glViewport OPENGL32 WINAPI: glMatrixMode OPENGL32 WINAPI: glLoadIdentity OPENGL32 WINAPI: glClearColor OPENGL32 WINAPI: glClear OPENGL32 WINAPI: glColor3i OPENGL32 WINAPI: glColor3f OPENGL32 WINAPI: glVertex3i OPENGL32 WINAPI: glVertex2i OPENGL32 WINAPI: glVertex2f OPENGL32 WINAPI: glVertex2fv OPENGL32 WINAPI: glVertex2iv OPENGL32 WINAPI: glBegin OPENGL32 WINAPI: glEnd OPENGL32 WINAPI: glOrtho OPENGL32 WINAPI: glLineWidth OPENGL32 WINAPI: gluOrtho2D GLU32 ~ER/LOCALS/R-LOCAL.F CONTEXT @ ALT: TEMP-OUT REQUIRE FLOAT ~ER/FLOAT/FLOAT.F ALSO FLOAT ' PREVIOUS >R \ калбеки в нове настроены на самоочищение от параметров \ в этом каллбеке 2 параметра, их очищать не надо. это сделает винда \ т. к. снимает вызвавший 0 CALLBACK: RESHARE DUP CELL+ @ SWAP @ { h w } h w 0 0 glViewport 0x1701 glMatrixMode glLoadIdentity \ h int>F FD> 0,0 FD> \ работает и без этого \ w int>F FD> 0,0 FD> \ gluOrtho2D 0x1700 glMatrixMode glLoadIdentity ; : F, F> , ; CREATE L1 0,5 F, 0,5 F, CREATE L2 -0,5 F, 0,5 F, CREATE L3 -0,2 F, -0,2 F, CREATE L4 0,5 F, -0,5 F, 0 CALLBACK: DISP 0x4000 0x100 OR glClear \ 0x4000 GL_COLOR_BUFFER_BIT 255.0 F> 255.0 F> 0.0 F> glColor3f \ 3i ,сука, не работает!!! 7 glBegin \ квадрат 7 1 линия L1 glVertex2fv 255.0 F> 0.0 F> 255.0 F> glColor3f L2 glVertex2fv 0.0 F> 255.0 F> 255.0 F> glColor3f L3 glVertex2fv 0.0 F> 44.0 F> 12.0 F> glColor3f L4 glVertex2fv glEnd glutSwapBuffers ; : TEST 0 HERE glutInit 2 glutInitDisplayMode \ 0x0002 GLUT_DOUBLE - двойная буфферизация 600 800 glutInitWindowSize S" GL-TEST" DROP glutCreateWindow ['] RESHARE glutReshapeFunc ['] DISP glutDisplayFunc glutMainLoop ; TEST |
Автор: | Victor__v [ Чт июн 25, 2020 16:55 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Следующий вопрос. Попробовал запустить продвинутый пример отображения треугольника через шейдеры https://learnopengl.com/Getting-started/Hello-Triangle Естественно, файл OPENGL32 валяющийся в папке system32 не подходит для такого кода (тупо нет функций) Где можно взять подходящуюю DLL для GL версии 3.0 и выше? |
Автор: | Hishnik [ Чт июн 25, 2020 19:32 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Victor__v писал(а): Естественно, файл OPENGL32 валяющийся в папке system32 не подходит для такого кода (тупо нет функций) Где можно взять подходящуюю DLL для GL версии 3.0 и выше? Обновить драйверы, желательно полным пакетом от производителя. Это в случае, если с момента установки ОС вообще ничего специально не ставилось. |
Автор: | Victor__v [ Чт июн 25, 2020 20:25 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Hishnik писал(а): Victor__v писал(а): Естественно, файл OPENGL32 валяющийся в папке system32 не подходит для такого кода (тупо нет функций) Где можно взять подходящуюю DLL для GL версии 3.0 и выше? Обновить драйверы, желательно полным пакетом от производителя. Это в случае, если с момента установки ОС вообще ничего специально не ставилось. Я обновлял драйверы меньше года назад на видеокарту NVIDEA Мне нужна, надеюсь, только DLL Может ли случится так, что она просто валяется где-то под другим названием? |
Автор: | Hishnik [ Чт июн 25, 2020 20:56 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Victor__v писал(а): Может ли случится так, что она просто валяется где-то под другим названием? Скорее под тем же названием, правильная (обновленная) версия, но при старте находит старую, которая была в ОС по умолчанию. Это зависит от того, в каком порядке в PATH перечислено. Можно попробовать положить правильный файл прямо в папку проекта. Кроме того, там еще что-то в glu32.dll |
Автор: | Victor__v [ Чт июн 25, 2020 21:57 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Сейчас вот нашел https://www.khronos.org/opengl/wiki/Pla ... on_Windows Там есть как и исходники, так и 2 DLL Закинул себе в папку с фортом, по крайней мене не вылетает. Хотя я не уверен в используемой конвенции вызовов. Наверно придется лезть в исходники. Однако сами функции с этими, как их там, пометками компилятора То есть функция glCreateShader называется _glCreateShader@4 например В общем, пример из урока запустил но он не работает |
Автор: | KPG [ Чт июн 25, 2020 22:21 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Victor__v писал(а): В общем, пример из урока запустил но он не работает Если ещё пробовать запускать примеры из "древних" OpenGL SDK то они бывает интересно работаю/неработают в современном графическом окружении операционной системы. |
Автор: | Victor__v [ Чт июн 25, 2020 23:50 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Треугольник нарисовался. Однако шейдеры не хотят работать. Ошибка кстати интересная. glsl 3.00 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.00 ES, and 3.00 ES Что делать? в качестве обертки использую freeglut |
Автор: | Hishnik [ Пт июн 26, 2020 00:10 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Victor__v писал(а): glsl 3.00 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.00 ES, and 3.00 ES Что делать? А какая видеокарта? Может, и правда not supported? |
Автор: | Victor__v [ Пт июн 26, 2020 00:19 ] |
Заголовок сообщения: | Re: IUP и OPENGL |
Hishnik писал(а): Victor__v писал(а): glsl 3.00 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.40, 1.00 ES, and 3.00 ES Что делать? А какая видеокарта? Может, и правда not supported? intel hd graphics 4000 и NVidea GeForce 710M Вообще подозреваю, что виновата библиотека Mesa3D откуда я и взял OPENGL32.DLL Поскольку не только мне посчастливилось столкнуться с похожей ошибкой |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |