видеокарта - можно ли ей пользоваться?

Модератор: Модераторы

Re: видеокарта - можно ли ей пользоваться?

Сообщение скалогрыз » 20.01.2017 22:26:04

vitaly_l писал(а):Это понятно, что напрямую, но оно там в открытом коде написано или в dll спрятано ??? Хотя, я ведь делал... там не было dll...
ща найду проект, посмотрю, может найду как напрямую обратится.

конечно, всё в коде написано! как же иначе код поддерживать, и дрова обновлять?!

ещё раз говорю, OpenGL это к видеокарте напрямую, без каких-либо проволочек.
Берёшь OpenGL и сразу грузишь в карточку свою шейдеры какие хочешь! и текстуры и нормали!
всё что хочешь! главное не используй не DX ни Вулкан... и не ищи других решений. Ибо это всё не то, и от сути отвлекает.

vitaly_l писал(а):Злой Вы скалогрыз, нету в Вас искорки и капельки сочувствия!

а я считаю себя очень добрым! паладином 80-го уровня. :mrgreen:

Добавлено спустя 56 секунд:
и кстати! в OpenGL коде очень много goto используется! да!

Добавлено спустя 3 минуты 16 секунд:
Вот тут инструкция по компиляции исходников OpenGL-я
Но я советую с ней не заморачиваться пока, а использовать то что уже идёт с системой ... ИИИ...
начать с того, что загрузишь свой шейдер, текстуру на карточку!

а как заработает, то сразу можешь к компиляции самого OpenGL-я переходить! (ну т.е. решать проблему постепенно)

Если есть какие-то сомнения, то попробуй ка исходники того же DirectX найти или Вулкана! А OpenGL - вот он! открытый!
не зря же он "Open"!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: видеокарта - можно ли ей пользоваться?

Сообщение vitaly_l » 20.01.2017 22:34:38

Вот следующая фраза из описания, про пользование шейдерами OpenGL, говорит о том что, "вулкан" проигрывает OpenGL т.к. не оптимален со своими бинарными кодами, вот текст из openGL: "Драйвер сам генерирует внутри себя оптимальный двоичный код, который понимает данное оборудование. Это гарантирует, что один и тот же шейдер будет правильно и эффективно работать на различных платформах. "

Добавлено спустя 29 минут 59 секунд:
скалогрыз писал(а):Тут же снимается проблема объяснения что такое "их IDE", т.к. OpenGL- это же уже и так работа с карточкой напрямую!!!
и ВСЁ! автоматически вопрос по шейдерам решён! даётся ссылка на урок какой-нить Delphi NeHe и готово!
...а иначе это всё ещё может долго продолжаться...

Знал и молчал??? Всё так просто и наглядно:
Код: Выделить всё
  //! Исходный код шейдеров
  const char* vsSource =
    "attribute vec2 coord;\n"
    "void main() {\n"
    "  gl_Position = vec4(coord, 0.0, 1.0);\n"
    "}\n";
  const char* fsSource =
    "uniform vec4 color;\n"
    "void main() {\n"
    "  gl_FragColor = color;\n"
    "}\n";
  // ! Переменные для хранения идентификаторов шейдеров
  GLuint vShader, fShader;

Осталось только раскусить в коде openGL, вот эти фигни:
Код: Выделить всё
Шаги загрузки и компиляции:
Сначала выделяются идентификаторы в виде GLuint, под шейдеры - glCreateShader, а под шейдерную программу - glCreateProgram.
На идентификатор шейдера загружается исходный код, который передается драйверу glShaderSource.
После этого шейдер компилируется glCompileShader.
Несколько шейдеров разных типов прикрепляются к программе glAttachShader
Последний шаг - линкование прикрепленных шейдеров в одну шейдерную программу glLinkProgram.

и после этого можно забыть про все эти пакеты как про страшный сон!
Сделать вместо них: один простенький и удобный класс с минимумом функций, для движка!!!
Там всего-то потребуется от 12 до 24 крохотных функций написать и всё!!!!!


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: видеокарта - можно ли ей пользоваться?

Сообщение скалогрыз » 21.01.2017 00:28:21

vitaly_l писал(а):Знал и молчал???

?? ты это к чему???

ну не важно ... ой, а куда ты требование примера дел?

как правильно заметил Павиа, в своём первом же посте - тебе просто нужно сразу правильно формулировать вопрос!
ведь ты просто хотел простого примера!

и я даже тебе его написал! в Лазарусе, да

если ты скажешь, что я тебе подсунул фигню, то тогда ты должен будешь ответить на вопрос - "почему треугольник красный?!"
Вложения
shaders.zip
(2.64 КБ) Скачиваний: 827
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: видеокарта - можно ли ей пользоваться?

Сообщение vitaly_l » 21.01.2017 00:41:50

скалогрыз писал(а):"почему треугольник красный?!"

Не ну прям как взрослый!! Ну там же в коде прямо написано: gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
Замените эту строчку на gl_FragColor = vec4(0.0, 1.0, 0.0, 1.0); и треугольник будет зелёный!
Всему Вас программистов нужно учить!!! Ну Вы же даже цвет поменять не можете, без художников... :wink:

Спасибо, большое за пример, только он у меня не открылся, т.к. в Лазарусе нет GL контрола :(
Где Вы берёте работающий OpenGL? ( я в проекте подгружаю какой-то сокращённый, т.к. остальные тогда не смог открыть )

Добавлено спустя 4 минуты 41 секунду:
Хотя стоп!!! Все модули у меня лазарус видит... но не компилирует...
Вложения
errror001.png
errror001.png (28.46 КБ) Просмотров: 25217
Последний раз редактировалось vitaly_l 21.01.2017 00:49:59, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: видеокарта - можно ли ей пользоваться?

Сообщение скалогрыз » 21.01.2017 00:47:45

vitaly_l писал(а):и треугольник будет зелёный!

откуда такая уверенность? :mrgreen: :mrgreen: :mrgreen:

vitaly_l писал(а):Где Вы берёте работающий OpenGL?

lazarus/components/opengl
там как раз лежит тот самый lazopenglcontext.lpk который нужно в лазарус установить...
...удивлён что он не идёт по-умолчанию.

Добавлено спустя 1 минуту 52 секунды:
А ещё мой Лазарус при запуске выдаёт вот такую ошибку!
error_msg.png
error_msg.png (7.22 КБ) Просмотров: 25217

А ещё её поругался со всеми, с кем только можно!
А ещё я должен всем кому только можно, и отдавать мне этот долг ещё года три!
... но я же не прошу тебя решать ВСЕ мои проблемы ;) :mrgreen: :mrgreen: :mrgreen:
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: видеокарта - можно ли ей пользоваться?

Сообщение vitaly_l » 21.01.2017 01:05:36

скалогрыз писал(а):откуда такая уверенность?

Ну, потому что фон-то зелёный. В смысле всё заработало... а я дурак раньше сторонний какой-то GL грузил...

скалогрыз писал(а):А ещё её поругался со всеми, с кем только можно!
А ещё я должен всем кому только можно, и отдавать мне этот долг ещё года три!
... но я же не прошу тебя решать ВСЕ мои проблемы

Не парься, мне всё равно хуже чем тебе, я сцепился с Кащеем, а на Кащея работает вся "королевская" "рать".
Так что моя песенка, вообще почти уже спета.

Сейчас попробую разобраться как избавиться от open GL и сохранить шейдеры.
Спасибо, добрый скалогрыз!

.

Добавлено спустя 15 минут 45 секунд:
Всё... облом... попробовал посмотреть как работает glCreateProgram и там вот такой код:
Код: Выделить всё
  glCreateProgram: function(): GLuint; extdecl;
  glCreateShader: function(_type: GLenum): GLuint; extdecl;
  glDeleteProgram: procedure(_program: GLuint); extdecl;
  glDeleteShader: procedure(shader: GLuint); extdecl;     

В смысле текст самих функций - посмотреть не дают (((
или я как обычно, пока что, ещё не умею их смотреть?
OpenGL32.dll <== nfv они все лежат? Верно? Вот и весь опен сорс...

.
Последний раз редактировалось vitaly_l 21.01.2017 01:30:01, всего редактировалось 1 раз.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: видеокарта - можно ли ей пользоваться?

Сообщение скалогрыз » 21.01.2017 01:28:07

vitaly_l писал(а):В смысле текст самих функций - посмотреть не дают (((
или я как обычно, пока что, ещё не умею их смотреть?

как не дают-то? дают!
ставишь значит бряк поинт на вызов glCreateProgram.
запускаешь программу и ждёшь останову! а там уже вот в этом окне код смотреть.
И я тебе даю 100% гарантию, что это именно тот самый код, который с карточкой говорит.

---
Естественно ты сейчас начнёшь говорить, что дескать, художники лунного не понимают.
Ну тогда как я и сказал выше. Скачиваешь исходнички opengl-я, которые совсем-совсем открыте.
Например вот эти!
а в них находишь реализацию glCreateProgram (которая лежит в src\mesa\main\shaderapi.c строчка 1364, функция _mesa_CreateProgram) и начинаешь потихонечку ковырать!

и не благодари!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: видеокарта - можно ли ей пользоваться?

Сообщение vitaly_l » 21.01.2017 01:39:15

скалогрыз писал(а):как не дают-то? дают!
ставишь значит бряк поинт на вызов glCreateProgram.
запускаешь программу и ждёшь останову! а там уже вот в этом окне код смотреть.
И я тебе даю 100% гарантию, что это именно тот код самый код, который с карточкой говорит.

))))))))))))) Хитро!!! Я так точно программистом стану... там всего три строчки на asm... но понять первую - никак ((((
Вложения
br1.png
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: видеокарта - можно ли ей пользоваться?

Сообщение скалогрыз » 21.01.2017 01:44:35

vitaly_l писал(а):Я так точно программистом стану...

да! и балалайки камертоном разрешат настраивать :mrgreen:
гугли чо! opengl это наше всё!

а как научишься свои шейдеры и текстуры на карточку загружать, может тебе и про .... ... не рано ещё.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: видеокарта - можно ли ей пользоваться?

Сообщение vitaly_l » 21.01.2017 01:49:26

скалогрыз писал(а):может тебе и про .... ... не рано ещё.

Да я уже взрослый!!! Мне уже можно...
Чего там утаить хочешь от художников? Изюминку? Орешки?
Колись, чего спрятал узурпатор?

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: видеокарта - можно ли ей пользоваться?

Сообщение скалогрыз » 21.01.2017 01:55:23

чё то я не вижу, чтобы бы ты текстуру на карточку загрузил. :?
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: видеокарта - можно ли ей пользоваться?

Сообщение vitaly_l » 21.01.2017 01:58:21

скалогрыз писал(а):чё то я не вижу, чтобы бы текстуру на карточку загрузил.

Это делается как-то просто. Типа for i := 0 to 7 do glLoadTextureFromFile( '..' ); или около того.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: видеокарта - можно ли ей пользоваться?

Сообщение скалогрыз » 21.01.2017 01:59:16

vitaly_l писал(а):Это делается как-то просто. Типа for i := 0 to 7 do glLoadTextureFromFile( '..' ); или около того.

аха...аха...
короче, доступ к карточке, к коду, к примеру, у тебя есть. Ковыряйся.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: видеокарта - можно ли ей пользоваться?

Сообщение vitaly_l » 21.01.2017 03:29:13

скалогрыз писал(а):Ковыряйся.

Поковырялся - не помогло... По тем кусочкам, которые посмотрел, понял что, там как обычно вместо простого и понятного всё зачем-то усложнено до безумия.

Код: Выделить всё
GLAPI void APIENTRY glCompileShader(GLuint shader)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[482];
   ((void (APIENTRY *)(GLuint shader)) _func)(shader);
}

GLAPI GLuint APIENTRY glCreateProgram(void)
{
   const struct mapi_table *_tbl = entry_current_get();
   mapi_func _func = ((const mapi_func *) _tbl)[483];
   return ((GLuint (APIENTRY *)(void)) _func)();
}


Я технически не смогу расковырять С++ openGl и выдрать оттуда загрузку шейдеров на карточку ((((
А так всё хорошо начиналось :| :( :cry: :cry: :cry:

Неужели, никто не загружает шейдеры сам, без OpenGL?
Карточку, ведь можно пользовать не только для 3D, но и для ещё чего нить...
Может у кого уже есть готовый код загрузки шейдеров "минуя" OpenGL ?


.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: видеокарта - можно ли ей пользоваться?

Сообщение скалогрыз » 21.01.2017 06:28:24

ну ты уж извиняй. Но ничего другого нет. На OpenGL свет клином сошёлся!

если тебя интересует не совсем 3d графика, а какой-нить bitcoing mining, обсчёт ДНК, программа поиска внеземных цивилизаций, ну или банальный взлом пароля, то тебе нужно смотреть в сторону OpenCL или даже CUD-ы.

В общем и целом, вместо того, чтобы получать непосредственный доступ к железке, лучше просто изучить как работает соответственный API. (о чём тебе все тут говорят.. уже 3ью страницу)
Но если ты неугомонен, то, конечно же ковыряй те самые Си-шные (даже не Си++) исходники...

Ещё можно выпендриться, и вместо Винды использовать Линукс! Так там вообще песня и кой-какие дровишки доступны с исходниками.
но говорят, что там паскалем и не пахло... :mrgreen:
приятного время препровождения!
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Пред.След.

Вернуться в Графика и мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

Рейтинг@Mail.ru