-1
저는 vec4 colorA와 colorB로 2+ 간단한 UBO를 만듭니다. std140을 사용하여 불필요하게 복잡한 UBO 생성/바인딩 프로세스를 사용하는 검정 화면 만 표시합니다. 어떻게 glCreate를 사용하면서 어떤 인덱스를 지정하고이 엉망이 작동하도록 할 수있어서 colorA 또는 colorB를 선택할 수 있습니까?바인드없는 UBO 바인딩을 지정하는 방법은 무엇입니까?
//GLSL
layout(std140, binding = 0) uniform sceneBuffer
{
vec4 colorA;
};
layout(std140, binding = 1) uniform objectBuffer
{
vec4 colorB;
};
그리고이 C++ 버퍼 초기화 코드 :이 쉐이더을 감안할 때
//APP
glCreateBuffers(1, &testUBO);
glNamedBufferData(testUBO, sizeof(glm::vec4), 0, GL_DYNAMIC_DRAW);
glGetNamedBufferParameterui64vNV(testUBO, GL_BUFFER_GPU_ADDRESS_NV, &uboScene_64);
glMakeNamedBufferResidentNV(testUBO, GL_READ_ONLY);
glm::vec4 myVec4 = glm::vec4(0.f, 1.f, 0.f, 1.f); //add to structs.h
glNamedBufferSubData(testUBO, 0, sizeof(glm::vec4), &myVec4
//SHARED HEADER
typedef glm::vec4 vec4;
layout(std140, binding = 0) uniform sceneBuffer
{
vec4 colorA;
};
layout(std140, binding = 1) uniform objectBuffer
{
vec4 colorB;
};
//SHADER PROGRAM
void main()
{
Ci = colorA;
Ci = colorB;
}
덕분에, glBufferAddressRangeNV''에 전화를 실종됐다 – waaitt