169 похожих чатов

@Kpilippenok and @all По поводу эпопеи компонента OpenGL в версиях 3.2,

3.6.
В общем, с помощью дебага и экспериментов, я выяснил, что функции gdk_x11_get_default_xdisplay() и gdk_x11_get_default_screen() работают нормально.
Во всяком случае, я взял glxtest.pp и запихнул их в проект Лазаруса с Tform по нажатию кнопки - этот тест работает.
Проблема проявляется с самим фактом TOpenGLControl. Т.е. проблема с glxChooseFBConfig() появляется, если у объекта свойство visible поставить в true.
Если с этого момента начать дебажить по шагам, то всё идёт своим чередом до файла wincontrol.inc, процедура TWinControl.CreateWnd(), внутри которой строка 7538 вызов функции TWSWinControlClass(WidgetSetClass).CreateHandle(Self, Params); , которая собственно вызывает из компонента OpenGL функцию TWOpenGLControl.CreateHandle(), далее из которой доходит до glxChooseFBConfig(), которая возвращает nil.
Вот я дошёл до этой стадии, но мне не понять суть проблемы и как её решить?
Что делает такого TOpenGLControl, что сносит башню у функций gdk и glx?

17 ответов

2 просмотра

может @rouse_79 что скажет?

ну так почитайте доку на glxChooseFBConfig

Yan Bessonov- Автор вопроса
Boris Usievich
ну так почитайте доку на glxChooseFBConfig

Я читал. Если бы это помогло, то вопроса бы не было.

Iluha Companets
может @rouse_79 что скажет?

Тут не подскажу, не смотрел этот gl

Yan Bessonov
Я читал. Если бы это помогло, то вопроса бы не был...

оно выдает null если на входе что-то не то.

Yan Bessonov
Я читал. Если бы это помогло, то вопроса бы не был...

Return Values Null Indicates that either - an undefined GLX attribute is encountered in the specified AttributeList, that no FBConfig matches the specified values for the GLX attributes or - that screen is invalid.

Yan Bessonov- Автор вопроса
Boris Usievich
оно выдает null если на входе что-то не то.

Функции библиотеки gdk отлично работают за пределами компонента opengl. Атрибуты тоже менял в исходниках компонента и перекомпилировал. Не помогает.

Yan Bessonov- Автор вопроса
Serg
Return Values Null Indicates that either - an un...

Перетаскивал в исходник компонента атрибуты из glxtest.pp - не работает. Сами по себе функции gdk работают в тесте glxtest.pp Я делаю вывод, что проблема где то в лазарусе или компоненте OpenGL применительно к X11.

Yan Bessonov
Функции библиотеки gdk отлично работают за предела...

Проблема очевидно в параметрах, которые передаются, ибо библиотеке глубоко пофиг, кто ее вызывает

Yan Bessonov
Перетаскивал в исходник компонента атрибуты из glx...

запросили то, чего найти не получилось, получился пустой список результатов

Yan Bessonov- Автор вопроса
Boris Usievich
Проблема очевидно в параметрах, которые передаются...

У функций библиотеки gdk нет параметров. Атрибуты для glxChooseFBConfig определяются Самим компонентом opengl

Yan Bessonov- Автор вопроса
Serg
запросили то, чего найти не получилось, получился ...

Функция CreateOpenGLContextAttrList() получает на входе вполне нормальные параметры, из которых формируются атрибуты, которые используются в glxChooeFBConfig()

Yan Bessonov
У функций библиотеки gdk нет параметров. Атрибуты ...

а это что тогда: { Attributes to choose context with glXChooseFBConfig. Similar to Attr, but not exactly compatible. } AttrFB: Array[0..10] of integer = ( GLX_X_RENDERABLE, 1 { true }, GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, GLX_DOUBLEBUFFER, 1 { true }, none); ... FBConfigs := glXChooseFBConfig(dpy, DefaultScreen(dpy), AttrFB, FBConfigsCount);

Yan Bessonov- Автор вопроса
Yan Bessonov
В смысле?

файл unit_glxtest.pas: строка 38: опереляется константа AttrFB строка 144, 245: константа AttrFB передается 3-м параметром (AttributeList) в функцию glXChooseFBConfig()

Yan Bessonov- Автор вопроса
Serg
файл unit_glxtest.pas: строка 38: опереляется конс...

Это понятно, но какие из этого выводы? Атрибуты частично насильно поменял и glxChooseFBConfig() перестала возвращать nil. Подробности выше.

Похожие вопросы

Обсуждают сегодня

а проверьте, собирается ли у кого сейчас транк лазаря через делюкс? у меня вот: fpcupdeluxe: info: Lazarus Native Installer (BuildModuleCustom: UserIDE): LazBuild: building Us...
Iluha Companets
20
добрый день. возможно ли изменить цвет окон лазаруса? Как?
Budemposmotret
35
This is a big issue. Just by being a citizen of a country, you are denied to contribute to Open Source software: https://youtu.be/L5Ec5jrpLVk?si=1iIuHnMPbCB4anV-
Sharuzzaman Ahmat Raslan
72
Господа, а кто-нибудь сталкивался с размещением на TTabControl/TTabSheet множества контролов (> 100) с последующими External: Access violation? Вот буквально на ровном месте. ...
Dmitry
29
Вот например простой пример, как получить стоимость хешрейта монеты монеро с сайта whattomine.com c использование сеарилизатора при парсинге JSON TaskProfit := TTask.Run(proc...
Delphi Coder
2
ну так че, сделать програмулину, в которую можно добавлять в Едиты свои строчки кода(закладки) а потом по ним прыгать. ну и сохраняться они естественно будут той програмуленно...
Kraszx
15
Приветствую всех!)) Подскажите, а кто мог бы написать на делфи движок (самую базу) интерпретатора очень легковесного и минималистичного языка программирования? Язык - проце...
Моринаро
8
А какие существуют способы обработки ошибок выделения памяти в ядре? Т.е., допустим, есть функция, которая возвращает адрес свободной страницы в физической памяти и диапазон в...
disba1ancer
51
Does anyone have some zeroday's left?
Wito!d ♥️🩷
44
#include <stdlib.h> #include <stdio.h> #include <math.h> #include <assert.h> #include <limits.h> long long avg3(long long a, long long b, long long c) { if (a == b && b =...
Malformed C
4
Карта сайта