Как я могу привязать данные вершин к GLSL в unity3D? - PullRequest
0 голосов
/ 29 января 2019

Я делаю программу единства с GLSL-шейдером.Я знаю, как использовать шейдер в программировании окон openGL, а не Unity.

в документе Unity, он говорит, что «использовать встроенный атрибут».но это настолько низкая версия GLSL.старшая версия, используйте вот так.

    layout(location = 0) in vec3 a_position;
    layout(location = 1) in vec3 a_normal;
    out vec3 v_position_EC;
    out vec3 v_normal_EC;

старшая версия не поддерживает переменные vayring и предопределенные переменные.если я установлю "#version 400", это может быть полным.но любые данные идут.

Я хочу преобразовать этот код в код Unity C #.

 glGenBuffers(1, &rectangle_VBO);

 glBindBuffer(GL_ARRAY_BUFFER, rectangle_VBO);
 glBufferData(GL_ARRAY_BUFFER, sizeof(rectangle_vertices), &rectangle_vertices[0][0], GL_STATIC_DRAW);

 // Initialize vertex array object.
 glGenVertexArrays(1, &rectangle_VAO);
 glBindVertexArray(rectangle_VAO);

 glBindBuffer(GL_ARRAY_BUFFER, rectangle_VBO);
 glVertexAttribPointer(LOC_POSITION, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), BUFFER_OFFSET(0));
 glEnableVertexAttribArray(0);
 glVertexAttribPointer(LOC_NORMAL, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), BUFFER_OFFSET(3 * sizeof(float)));
 glEnableVertexAttribArray(1);

 glBindBuffer(GL_ARRAY_BUFFER, 0);
 glBindVertexArray(0);

Я не могу найти какой-либо документ для данных 'bind' в Unity.это невозможно?Я хочу решение или сказать, что это не может.

Я уже завершил конвертировать в низкую версию.но мой босс хочет высокую версию .... пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 12 февраля 2019

В Unity вам нужно только назначить материал (шейдер) для рендеринга сетки, который должен быть визуализирован.

https://docs.unity3d.com/Manual/class-MeshRenderer.html

Если вы хотите написать код OpenGL в Unity,Вы можете обратиться к этому demo.btw.

https://bitbucket.org/Unity-Technologies/graphicsdemos/overview

...