Хм - если вы используете тени, то графический процессор должен быть загружен, поэтому маловероятно, что графический процессор визуализирует кадры быстрее, чем центральный процессор отправляет графические данные. В этом случае 100% нагрузки в порядке и даже ожидаемо.
Это может быть просто драйвер OpenGL, который выполняет циклы ЦП в спин-блокировке где-нибудь. Чтобы узнать, что именно происходит, я предлагаю вам запустить инструмент профилирования, такой как Code Analyst от AMD (бесплатно, когда я в последний раз использовал его).
Профилируй свою программу пару минут и посмотри, на что тратится время. Если вы видите большой пик в драйверах opengl, а не в вашем приложении, получите новый драйвер. В противном случае вы хотя бы получите представление о том, что происходит.
Кстати, позвольте мне догадаться, вы используете карту ATI, верно? Я не хочу обижать поклонников ATI, но их OpenGL-диски не совсем звездные. Если вам не повезло, вы можете даже использовать функцию, которую карта не поддерживает или которая отключена из-за силиконовой ошибки. В этом случае драйвер перейдет в режим растеризации программного обеспечения. Это сильно замедлит работу и обеспечит 100% загрузку ЦП, даже если ваша программа однопоточная.