Вообще, текст ошибки предельно ясен и это легко исправляется: Rot Triangle 1.vertex.glsl (265 Байты)
И уже это у меня нормально работает:
UPD: а, серёга уже про это написал давным давно, ну ладно
Вообще, текст ошибки предельно ясен и это легко исправляется: Rot Triangle 1.vertex.glsl (265 Байты)
И уже это у меня нормально работает:
UPD: а, серёга уже про это написал давным давно, ну ладно
Спасибо, с вашими поправками у меня теперь даже графическое окно не показывается - приложение просто завершает свою работу
У меня всё работает:
По поводу оптимизации размера.
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
. Что вы пытались этим показать?
Сейчас бы запускать .exe из архива и жаловаться что не работает.
И уже сказали выше, ему ещё нужен файл шейдера (.glsl).
Вообще-то из архива запускаются даже инсталляторы ну очень больших и важных программ, так что не надо “ля-ля”. Архив тут не при чем.
А вот шейдеры - да, с ними работает, вращается треугольник.
.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 - заработало
Я закачал новую версию