Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
GL_COLOR_BUFFER_BIT
и GL_DEPTH_BUFFER_BIT
не являются функциями, они являются константами. Вы используете их, чтобы сообщить glClear()
, какие буферы вы хотите очистить, - в вашем примере, буфер глубины и «буферы, которые в настоящее время включены для цветной записи». Вы также можете передать GL_ACCUM_BUFFER_BIT
, чтобы очистить буфер накопления и / или GL_STENCIL_BUFFER_BIT
, чтобы очистить буфер трафарета.
Фактические значения констант не должны иметь значения для вас при использовании библиотеки - важного детальность реализации заключается в том, что двоичные представления для каждой константы не перекрываются друг с другом. Это та характеристика, которая позволяет передавать побитовое ИЛИ из нескольких констант одному вызову glClear()
.
Подробнее см. glClear()
documention .
Вызов glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) очищает буферы цвета и глубины OpenGL (или любой другой буфер или комбинацию буферов). OpenGL - это конечный автомат, рекомендуется начинать каждый кадр с чистого листа.
gl.h
. На моей машинеGL_COLOR_BUFFER_BIT
есть0x00004000
, аGL_DEPTH_BUFFER_BIT
-0x00000100
. О чем еще можно узнать? – Carl Norum 30 March 2011 в 00:19