Size: a a a

pro.graphon (and gamedev)

2020 July 03

AB

Alexander Barbanakov in pro.graphon (and gamedev)
Isaac Schneider
Если я оба буфера привяжу к одному vbo
glGenBuffers(1, &vbo_drawarray);
glBindBuffer(GL_ARRAY_BUFFER, vbo_drawarray);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glVertexAttribPointer(vertexLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBufferData(GL_ARRAY_BUFFER, sizeof(colors), colors,
GL_STATIC_DRAW);
glVertexAttribPointer(colorLocation, 4, GL_FLOAT, GL_FALSE, 0, 0);
Каким нибудь таким макаром, выгорит это?
glBindBuffer(GL_ARRAY_BUFFER, vbo_drawarray);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(colors), 0, GL_STATIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(colors), colors);
Так можно попробовать
источник

S

Skarn in pro.graphon (and gamedev)
Alexander Barbanakov
А насчет структур, вы имеете ввиду что бы создавать массив структур с нужными данными для шейдеров и передавать его в буффер?
да
источник

S

Skarn in pro.graphon (and gamedev)
ну чтобы только 1 раз биндить
источник

AB

Alexander Barbanakov in pro.graphon (and gamedev)
Skarn
да
Не пробовал
источник

AB

Alexander Barbanakov in pro.graphon (and gamedev)
Isaac Schneider
Если я оба буфера привяжу к одному vbo
glGenBuffers(1, &vbo_drawarray);
glBindBuffer(GL_ARRAY_BUFFER, vbo_drawarray);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glVertexAttribPointer(vertexLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
glBufferData(GL_ARRAY_BUFFER, sizeof(colors), colors,
GL_STATIC_DRAW);
glVertexAttribPointer(colorLocation, 4, GL_FLOAT, GL_FALSE, 0, 0);
Каким нибудь таким макаром, выгорит это?
И для цвета нужно будет указать начало
glVertexAttribPointer(colorLocation, 4, GL_FLOAT, GL_FALSE, 0, (void*)(sizeof(vertices)));
источник

I

Isaac Schneider in pro.graphon (and gamedev)
Alexander Barbanakov
И для цвета нужно будет указать начало
glVertexAttribPointer(colorLocation, 4, GL_FLOAT, GL_FALSE, 0, (void*)(sizeof(vertices)));
Спасибо за ответ!
Сделал вот так:
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(colors), 0, GL_DYNAMIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(colors), colors);

glVertexAttribPointer(vertexLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
glVertexAttribPointer(colorLocation, 4, GL_FLOAT, GL_FALSE, 0, (void*)(sizeof(vertices)));
Пустое окно только висит, но судя по фпс, что-то он пытается рисовать)
источник

AB

Alexander Barbanakov in pro.graphon (and gamedev)
Isaac Schneider
Спасибо за ответ!
Сделал вот так:
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(colors), 0, GL_DYNAMIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(colors), colors);

glVertexAttribPointer(vertexLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
glVertexAttribPointer(colorLocation, 4, GL_FLOAT, GL_FALSE, 0, (void*)(sizeof(vertices)));
Пустое окно только висит, но судя по фпс, что-то он пытается рисовать)
Запускали с двумя парами glVertexAttribPointer?
источник

U

UsernameAK in pro.graphon (and gamedev)
как научиться в DirectX если я знаю только OGL
источник

I

Isaac Schneider in pro.graphon (and gamedev)
Alexander Barbanakov
Запускали с двумя парами glVertexAttribPointer?
Ох нет, с одной парой, просто попалось под руку)
источник

I

Isaac Schneider in pro.graphon (and gamedev)
Исправил
источник

S

Skarn in pro.graphon (and gamedev)
UsernameAK
как научиться в DirectX если я знаю только OGL
туториалы почитать
источник

S

Skarn in pro.graphon (and gamedev)
загугли directx hello triangle
источник

D

Dadaskis in pro.graphon (and gamedev)
UsernameAK
как научиться в DirectX если я знаю только OGL
Так же как и обучился OGL :D
источник

AB

Alexander Barbanakov in pro.graphon (and gamedev)
@Isaac_Schneider, после glGetAttribLocation нужно еще это
glEnableVertexAttribArray(vertexLocation);
glEnableVertexAttribArray(colorLocation);

и можно попробовать в glVertexAttribPointer явно stride'ы показать
источник

I

Isaac Schneider in pro.graphon (and gamedev)
Alexander Barbanakov
@Isaac_Schneider, после glGetAttribLocation нужно еще это
glEnableVertexAttribArray(vertexLocation);
glEnableVertexAttribArray(colorLocation);

и можно попробовать в glVertexAttribPointer явно stride'ы показать
Сразу после? У меня вот такая очерёдность:
int vertexLocation = glGetAttribLocation(shader_program, "a_Position");
int colorLocation = glGetAttribLocation(shader_program, "a_Color");

glBufferData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(colors), 0, GL_DYNAMIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(colors), colors);

glVertexAttribPointer(vertexLocation, 3, GL_FLOAT, GL_FALSE, 0, 0);
glVertexAttribPointer(colorLocation, 4, GL_FLOAT, GL_FALSE, 0, (void*)(sizeof(vertices)));

glEnableVertexAttribArray(vertexLocation);
glEnableVertexAttribArray(colorLocation);
источник

I

Isaac Schneider in pro.graphon (and gamedev)
Может дело в том, что не тот порядок действий?
источник

AB

Alexander Barbanakov in pro.graphon (and gamedev)
Попробуйте сразу после
источник

I

Isaac Schneider in pro.graphon (and gamedev)
Разницы нет)
источник

AB

Alexander Barbanakov in pro.graphon (and gamedev)
Печаль)
источник

I

Isaac Schneider in pro.graphon (and gamedev)
А страйды - это шаги же
источник