2016-08-28 4 views
1

Я новичок в OpenGL и GLM. Я слежу за онлайн-учебниками в надежде найти тот, который работает. Один учебник говорит мне, чтобы использовать этот фрагмент кода:glm :: value_ptr имеет слишком много аргументов

//Define the screen width and height, and get the ratio 
const float S_WIDTH = 800; 
const float S_HEIGHT = 600; 
const float S_RATIO = S_WIDTH/S_HEIGHT; 

//In my shader "shdprog" get the uniform variable "ortho"'s location 
GLuint orthoadr = glGetUniformLocation(shdprog, "ortho"); 

//Create a 4x4 matrix using glm 
glm::mat4 ortho = glm::ortho(-S_RATIO, S_RATIO, -1.f, 1.f, -1.f, 1.f); 

//Set the custom GLSL "ortho" uniform to the value of the glm::mat4 ortho 
glUniform4fv(orthoadr, 1, GL_FALSE, glm::value_ptr(ortho)/*too many arguments in function call*/); 

По какой-то причине, Visual Studio говорит мне, что glm::value_ptr() имеет слишком много аргументов («слишком много аргументов в вызове функции»). Даже удаление всех аргументов ничего не меняет.

Является ли мой учебник неправильным? Или я что-то придумал?

+1

Пожалуйста, отправьте сообщение [MCVE] вместе с точным сообщением об ошибке, которое вы получите. –

+0

Извините. Это лучше? –

+0

Это не ваша проблема, но 'const float S_RATIO = S_WIDTH/S_HEIGHT' даст значение 1. Вы делаете * integer * math, что приводит к целому числу, которое затем превращается в float. 800/600 равно 1, когда вы округлите до ближайшего целого числа. –

ответ

1

glUniform4fv принимает параметров. Функция, которую вы явно ищете, - glUniformMatrix4fv, которая занимает четыре.

Смежные вопросы