Параметр glEnable
должен быть одной константой перечислителя. Параметр не является битовым полем.
Следующее недопустимо и приведет к ошибке GL_INVALID_ENUM
, которая может быть обнаружена с помощью glGetError
или Отладочный вывод :
blockquote>glEnable(GL_DEPTH | GL_DEPTH_TEST);
Это должно быть
glEnable(GL_DEPTH_TEST);
В любом случае
GL_DEPTH
не является допустимым параметром дляglEnable
, но, возможно, это параметр дляglCopyPixels
.
Обратите внимание, что значение константы перечислителяGL_DEPTH_TEST
равно0x0B71
, а значениеGL_DEPTH
равно0x1801
. Бинарная или (|
) операция обеих констант не имеет никакого смысла.Из-за этого тест глубины никогда не включался и ничего не записывалось в буфер глубины.
Далее отметим, что значения, которые принимаются для диапазона глубины
glDepthRange
, должны находиться в диапазоне [0, 1]. Значения, которые передаются вglDepthRange
, фиксируются в этом диапазоне, прежде чем они будут приняты.Это означает, что
blockquote>glDepthRange(200, 2000);
равно
glDepthRange(1, 1);
, поэтому диапазон глубины равен [1, 1] и все значения возвращаются
glReadPixels
тоже равны 1.Пропустите
glDepthRange(200, 2000);
s>, чтобы решить проблему.
glGetDoublev(GL_MODELVIEW_MATRIX, matModelView)
получает текущую матрицу представления модели из стека матрицGL_MODELVIEW
.glGetDoublev(GL_PROJECTION_MATRIX, matProjection)
получает текущую проекционную матрицу из стека матрицGL_PROJECTION
.Таким образом, вы должны поместить матрицу проекции в стек матрицы
GL_PROJECTION
и матрицу просмотра в стек матрицыGL_MODELVIEW
(см.glMatrixMode
):glMatrixMode(GL_PROJECTION); glLoadIdentity(); glFrustum(-150, 150, -150, 150, 200, 2000); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(200,400,200,0,0.0,0.0,0.0,0.0,1.0);
Агент SQL Server проверяет, выполняется ли уже задание, перед началом новой итерации. Если у вас есть длительное задание и его расписание появляется, оно будет пропущено до следующего интервала.
Вы можете попробовать это сами. Если вы попытаетесь запустить задание, которое уже выполняется, вы получите сообщение об ошибке.
Я почти уверен, что так и будет. пропустите его, если он запущен.
Какую версию SQL Server вы используете? Кажется, это довольно легко проверить. Настройте задание с WAITFOR в нем, которое вставляет одну строку в таблицу и настраивает задание для запуска дважды в быстрой последовательности (короче, чем WAITFOR DELAY).
При запуске такого теста в SQL Server 2005 он пропускался пробег, который был перекрыт.