На картах Nvidia, если вы хотите, чтобы плоскость клика была включена, gl_ClipVertex должен быть назначен в программе glsl. Но на картах Ati возникает проблема, если назначается gl_ClipVertex.Как распознать графическую карту Intel в программе GLSL?
Для совместимости Nvidia/ATI, мы пишем коды, как это:
// fix the clipping bug for both Nvidia and Ati
#ifdef __GLSL_CG_DATA_TYPES
gl_ClipVertex = gl_ModelViewMatrix*gl_Vertex;
#endif
Вы можете проверить это link для получения дополнительной информации.
Возникла проблема. На графических картах Intel (например, HD Graphics 3000) необходимо назначить gl_GlipVertex. Если нет, плоскость клипа бесполезна. Но, как известно, __GLSL_CG_DATA_TYPES определяется только в системе Nvidia. Таким образом, строка gl_ClipVertex является skippd на Intel. Теперь кажется трудным написать совместимые программы glsl как на картах Nvidia/Ati/Intel.
Есть ли что-то вроде __GLSL_CG_DATA_TYPES, может распознавать графическую карту Intel в программе GLSL?
Да, спасибо, Это доступное решение. Но было бы лучше, если бы GLSL определил, что Intel всегда устанавливает и никто другой не делает. То, что я говорю, является символом, определяемым компилятором или драйвером, а не самим собой. Вы знаете кого-либо? – wan