我正在使用OpenGL和OpenCV在C ++中创建一个程序,它将在OpenCV的相机源中渲染3D对象。如果我只渲染一个对象,它就能很好地工作,但我不能给我的对象提供光照,因为每次启用$merge = $new;
foreach($db as $item) {
if (!in_array_r($item["pid"], $new)) {
$merge[] = $item;
}
}
function in_array_r($needle, $haystack, $strict = false) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_r($needle, $item, $strict))) {
return true;
}
}
return false;
}
或任何与深度相关的东西时,3D对象都不会出现在窗口中。但是如果禁用深度测试,则对象显示为平坦。我还在GLUT_DEPTH_TEST
中添加了GLUT_DEPTH
,在glutInitDisplayMode
添加了GL_DEPTH_BUFFER_BIT
。
我认为问题是因为我在程序中也使用了模板功能。我也将glClear
放在GL_STENCIL_BUFFER_BIT
中,但如果删除该程序则无效。任何人都知道如何解决这个问题?