相关疑难解决方法(0)

什么是英特尔HD 3000上正确的OpenGL初始化?

我在Toshiba笔记本电脑上安装了英特尔图形HD 3000 (OS Win7 x32,lang C++).

经典的单上下文OpenGL应用程序工作正常但在单个App中的多个OpenGL上下文中会产生奇怪的行为:

  1. 在我的应用程序的旧版本上,英特尔驱动程序根本无法创建第二个渲染上下文.
  2. 在我的基于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)

c++ windows opengl intel

6
推荐指数
1
解决办法
1382
查看次数

如何在iOS中的OpenGL ES中正确线性化深度?

我正在尝试使用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)

opengl-es glsl objective-c ios

3
推荐指数
1
解决办法
1087
查看次数

具有高多边形网格的 OpenGL 3D 光线拾取

如何使用包含高多边形网格的模型在 3d 场景中实现 3d 光线拾取?

迭代所有三角形以执行三角形线相交测试需要太多时间。我知道存在八叉树等方法,应该可以将它们用于场景中的模型,但我不知道我应该如何在网格级别使用这些概念。但是,如果您在网格级别使用八叉树,那么应该如何解决超出八叉树体积边界的多边形问题?

对于实时 OpenGl 应用程序的高多边形模型的 3d 射线交叉,您有什么建议吗?

opengl 3d ray-picking

3
推荐指数
1
解决办法
1542
查看次数

透视投影矩阵的通用公式

谁能告诉我实现透视投影矩阵的一般公式是什么?我正在尝试实现一种生成此矩阵的方法,以便将其用于我正在开发的游戏引擎。

math graphics projection matrix perspective

0
推荐指数
1
解决办法
4063
查看次数