Вызов glGetIntegerv с GL_MAX_VARYING_COMPONENTS не возвращает значениеC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вызов glGetIntegerv с GL_MAX_VARYING_COMPONENTS не возвращает значение

Сообщение Anonymous »

При вызове glGetIntegerv(GL_MAX_VARYING_COMPONENTS, &i); или glGetIntegerv(GL_MAX_VARYING_FLOATS, &i); с GLint i; в i ничего не записывается. Ошибки GL_INVALID_ENUM создаются в соответствии с glGetError().
Я вызываю glGetIntegerv после успешного вызова glfwInit() и успешного создания окна с помощью *window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL);, делая контекст окна текущим с помощью glfwMakeContextCurrent(*window);, и после успешной инициализации glewInit(). Я убедился, что glfwInit() и glewInit() вернули успешные значения.
Соответствующий код:

Код: Выделить всё

enum main_err {
MAIN_GLFW_INIT_ERR,
MAIN_WINDOW_INIT_ERR,
MAIN_GLEW_INIT_ERR,
MAIN_GLFW_LOG_ERR,
MAIN_GOOD
};

main_err init_glfw(GLFWwindow** window) {
glfwSetErrorCallback(glfw_error_callback);

if (!glfwInit()) {
return MAIN_GLFW_INIT_ERR;
}

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, false);
glfwWindowHint(GLFW_SAMPLES, 4);

*window = glfwCreateWindow(800, 600, "OpenGL", NULL, NULL);

if (!*window) {
glfwTerminate();
return MAIN_WINDOW_INIT_ERR;
}

glfwMakeContextCurrent(*window);

glfwSetKeyCallback(*window, glfw_key_callback);
glfwSwapInterval(1);

int width, height;
glfwGetFramebufferSize(*window, &width, &height);
glViewport(0, 0, width, height);

return MAIN_GOOD;
}

main_err glfw_log_parameters() {
GLenum param[] = {
// integer values
GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS,
GL_MAX_CUBE_MAP_TEXTURE_SIZE,
GL_MAX_DRAW_BUFFERS,
GL_MAX_FRAGMENT_UNIFORM_COMPONENTS,
GL_MAX_TEXTURE_IMAGE_UNITS,
GL_MAX_TEXTURE_SIZE,
GL_MAX_VARYING_COMPONENTS,
GL_MAX_VARYING_FLOATS,
GL_MAX_VARYING_VECTORS,
GL_MAX_VERTEX_ATTRIBS,
GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS,
GL_MAX_VERTEX_UNIFORM_COMPONENTS
};

const char* param_str[] = {
"GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS",
"GL_MAX_CUBE_MAP_TEXTURE_SIZE",
"GL_MAX_DRAW_BUFFERS",
"GL_MAX_FRAGMENT_UNIFORM_COMPONENTS",
"GL_MAX_TEXTURE_IMAGE_UNITS",
"GL_MAX_TEXTURE_SIZE",
"GL_MAX_VARYING_COMPONENTS",
"GL_MAX_VARYING_FLOATS",
"GL_MAX_VARYING_VECTORS",
"GL_MAX_VERTEX_ATTRIBS",
"GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS",
"GL_MAX_VERTEX_UNIFORM_COMPONENTS"
};

for (int i = 0; i < 10; i++) {
GLint p = 123456789;
glGetIntegerv(param[i], &p);

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78818999/calling-glgetintegerv-with-gl-max-varying-components-does-not-return-value[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»