我在Toshiba笔记本电脑上安装了英特尔图形HD 3000 (OS Win7 x32,lang C++).
经典的单上下文OpenGL应用程序工作正常但在单个App中的多个OpenGL上下文中会产生奇怪的行为:
在我的基于OpenGL的软件架构行为的重大变化发生变化之后
现在我能够创建第二个渲染上下文但在释放之后(在使用/关闭窗口之后),驱动程序无法创建任何下一个渲染上下文.这已经在多个应用程序上进行了测试,并且始终表现相同.我希望通过让第二个上下文始终处于活动状态来克服这个问题,但它也不起作用(某种程度上,渲染上下文在英特尔上无效).为清楚起见,第二个OpenGL渲染上下文用于打开/保存对话框(预览子窗口).
司机信息:
Intel(R) HD Graphics 3000
OpenGL ver: 3.1.0 - Build 9.17.10.2932
Run Code Online (Sandbox Code Playgroud)
初始化和退出OpenGL代码(来自我的OpenGL引擎):
//------------------------------------------------------------------------------
int OpenGLscreen::init(void *f,int textures)
{
if (_init) exit();
frm=(formtype*)f;
hdc = GetDC(frm->Handle); // get device context
int i;
if (!_used)
{
int i,_pfid=-1,_zbit=0;
PIXELFORMATDESCRIPTOR _pfd;
#define pfd_test i=ChoosePixelFormat(hdc,&pfd); DescribePixelFormat(hdc,i,sizeof(_pfd),&_pfd); if (_zbit<_pfd.cDepthBits) { _zbit=_pfd.cDepthBits; _pfid=i; }
pfd.cColorBits = 32; pfd.cDepthBits = …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用OpenGL为iOS应用程序渲染一个阿甘场景。为了使它更好一点,我想在场景中实现深度效果。但是,我需要从OpenGL深度缓冲区获得线性化的深度值。目前,我正在片段着色器(在此处找到)中使用计算。
因此,我的地形片段着色器如下所示:
#version 300 es
precision mediump float;
layout(location = 0) out lowp vec4 out_color;
float linearizeDepth(float depth) {
return 2.0 * nearz / (farz + nearz - depth * (farz - nearz));
}
void main(void) {
float depth = gl_FragCoord.z;
float linearized = (linearizeDepth(depth));
out_color = vec4(linearized, linearized, linearized, 1.0);
}
Run Code Online (Sandbox Code Playgroud)
但是,这将导致以下输出:
如您所见,越远,您得到的深度值越“条纹”(尤其是在船后)。如果地形图块靠近相机,那么输出就可以了。
我什至尝试了另一种计算:
float linearizeDepth(float depth) {
return 2.0 * nearz * farz / (farz + nearz - (2.0 * depth - 1.0) * (farz - …Run Code Online (Sandbox Code Playgroud) 如何使用包含高多边形网格的模型在 3d 场景中实现 3d 光线拾取?
迭代所有三角形以执行三角形线相交测试需要太多时间。我知道存在八叉树等方法,应该可以将它们用于场景中的模型,但我不知道我应该如何在网格级别使用这些概念。但是,如果您在网格级别使用八叉树,那么应该如何解决超出八叉树体积边界的多边形问题?
对于实时 OpenGl 应用程序的高多边形模型的 3d 射线交叉,您有什么建议吗?
谁能告诉我实现透视投影矩阵的一般公式是什么?我正在尝试实现一种生成此矩阵的方法,以便将其用于我正在开发的游戏引擎。
opengl ×2
3d ×1
c++ ×1
glsl ×1
graphics ×1
intel ×1
ios ×1
math ×1
matrix ×1
objective-c ×1
opengl-es ×1
perspective ×1
projection ×1
ray-picking ×1
windows ×1