Я работаю с простым DLL-плагином, где я вызываю glReadPixels
, чтобы вернуть пиксели на экран. При вызове функции в DLL она не работала с ошибкой 1282 (GL_INVALID_OPERATION)
.Функция возврата функции glReadPixels 1282 (GL_INVALID_OPERATION)
Я решил запустить код в качестве консоли EXE
, но ошибка все еще существует.
Что я делаю неправильно? Я использую Windows 10 с Retina экрана и мой код ниже:
int x2 = GetSystemMetrics(SM_CXSCREEN);
int y2 = GetSystemMetrics(SM_CYSCREEN);
GLvoid *imagePixelsArray = malloc((x2 *x2)*(y2* y2)*4);
glReadPixels(0, 0,x2,y2, GL_RGBA, GL_UNSIGNED_BYTE, imagePixelsArray);
cout << "ERROR is " << glGetError() << endl;
я x2 *x2
и (y2* y2)
, потому что я использую экран Retina. Удаление также не решило проблему.
У меня есть файл cookie, в котором говорится, что вы не вызываете его внутри действительного контекста GL. и даже если вы, десять файлов cookie говорят, что это не контекст, который соответствует всему экрану. –
@JayKominek От Unity Я называю это функцией OnPostRender и, насколько я понимаю, он работает для других людей. Поскольку он не работает, я решил протестировать его самостоятельно с помощью консольного приложения. Можете ли вы предоставить ссылку или пример? Как я могу назвать это из действительного контекста GL? Для даун-голосования я не знаю, почему. – Programmer
Имеет ли ['wglGetCurrentContext()'] (https://msdn.microsoft.com/en-us/library/windows/desktop/dd374383%28v=vs.85%29.aspx) перед 'glReadPixels()' вернуть что-то другое, чем 'NULL'? – genpfault