OpenGL стандартный модуль

Вообще, текст ошибки предельно ясен и это легко исправляется: Rot Triangle 1.vertex.glsl (265 Байты)

И уже это у меня нормально работает:

UPD: а, серёга уже про это написал давным давно, ну ладно

Спасибо, с вашими поправками у меня теперь даже графическое окно не показывается - приложение просто завершает свою работу

1 лайк

У меня всё работает:

По поводу оптимизации размера.

unit u;

type A = class
  i,j: integer;
  procedure ppppppp; begin end;
  static procedure sssssss; begin end;
end;

B = class
  function a1: A := new A;
end;

end.

и

uses u;

begin
  var a1: B; 
end.

В exe шнике нет ни намека на класс A - что я и говорил. Если захотеть сократить размер exe, это можно сделать.

Ну и что? Тут всё понятно, a1 не добавилась и поэтому не потянула за собой класс A. Что вы пытались этим показать?

1 лайк

Ну и?

Или оно работает в каких-то эксклюзивных условиях? Win 7, 64 бит

Сейчас бы запускать .exe из архива и жаловаться что не работает.

И уже сказали выше, ему ещё нужен файл шейдера (.glsl).

1 лайк

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

А вот шейдеры - да, с ними работает, вращается треугольник.

.exe тут причём. Его нужно перекомпилировать, как я показал (это раз). Два — нужна последняя версия паскаля, которой ещё нет на сайте. Вот установщик: https://drive.google.com/open?id=1OQBmawcs6Qttbr6J4ljEtComhBreov60

Ну я (и мой компьютер) про это не знали, наверно поэтому заработало.

об этом было написано выше ещё неделю назад

Я понял, что работает - это неважно, главное - было написано, а я не прочитал, негодник.

На самом деле нет. Компилируется и в последней официальной версии. Но только 1 раз)))

Ну, если не хотите ставить не_официальную версию паскаля - достаточно удалять .pcu после каждой компиляции, тогда и в старой версии будет работать.


На новом компе всё ещё жуть чо твориться, кучу программ надо доскачать. И ssh чот не настраивается. Ну, кое как POCGL скачал и перепаковал - вот:

OpenGL.zip (349,5 КБ)

Далее тестируйте именно на этом. Готовые .exe вообще нет смысла запускать, потому что ошибки так не выводит.

Замените поля на функции и сделайте скрытое поле, которое функция будет инициализировать при первом обращении

У меня на этом вот вот это

0(12) : error C7502: OpenGL does not allow type suffix 'f' on constant literals in versions below 120
0(13) : error C7502: OpenGL does not allow type suffix 'f' on constant literals in versions below 120
0(16) : error C7502: OpenGL does not allow type suffix 'f' on constant literals in versions below 120

Vertex info
-----------
0(12) : error C7502: OpenGL does not allow type suffix 'f' on constant literals in versions below 120
0(13) : error C7502: OpenGL does not allow type suffix 'f' on constant literals in versions below 120
0(16) : error C7502: OpenGL does not allow type suffix 'f' on constant literals in versions below 120
(0) : error C2003: incompatible options for link

INVALID_OPERATION
INVALID_OPERATION
INVALID_OPERATION

Так а чем это поможет, если поле всё равно будет существовать? Я уже несколько раз сказал, 1MB это не инициализатор полей, а сами поля + их типы-делегаты.

Интересно, то есть ваш GPU не поддерживает float… А попробуйте заменить f на d? А что если вообще убрать букву?

Хотя стоп, странно, в предыдущей ошибке же писало что тип элементов того вектора - это таки float.

Если

type B = class
  function f: A; begin if a1<>nil then Result := a1 else begin a1 := new A; Result := a1 end end;
  a1: A := функция-инициализатор
end;

то в итоговом коде будет только класс B, но не класс A, пока Вы не вызовите B.f

Если же даже в простом шаблончике кода OPENGL участвуют все классы, то это не выход - да будет груда кода - а как вы хотели?

Сделал в комментарии версию 120 - заработало

Я закачал новую версию