标签: opengl

用于OpenGL的轻量级数学库

所有的问候,

我正在寻找轻量级(少量文件或只有头文件)的数学库,用于OpenGL(C++)做矩阵运算(矩阵向量乘法,计算逆矩阵).

有什么建议 ?

c++ opengl matrix

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

OpenGl - 计算立方体中的法线

我需要从立方体计算6个面的法线.使用键移动立方体,因此,当立方体的位置需要知道正常面部时.

有什么方法可以帮助这个计算?

opengl

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

使用GLUT不专业吗?

我从这里读到的一些内容说使用GLUT被认为是不专业的.Swiftless有相当多的教程,我认为他是NeHe中的"转到OpenGL示例和教程".我在一些项目中使用了多种语言的GLUT,但主要用于学校项目.我发现使用它制作跨平台的OpenGL应用程序非常容易.

使用GLUT不专业吗?如果是这样的话?

opengl glut

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

C++:堆栈上的未初始化(?)数组(关于OpenGL的示例)

在堆栈上创建的数组的内容是什么,但没有放入值?像这样:

int array[4]
cout << array[2];
Run Code Online (Sandbox Code Playgroud)

我问这个是因为我在OpenGL中总是看到生成纹理时,它是这样做的:

GLuint textures[4];
glGenTextures(4, &textures[0]);

glBindTexture(GL_TEXTURE_2D, textures[2]);
Run Code Online (Sandbox Code Playgroud)

这有什么关系?

谢谢.

c++ arrays opengl stack

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

什么是OpenGL分配纹理ID的方法?

我有一个加载纹理的函数,并返回新生成的GLuint.如果它无法加载纹理,我需要知道应该返回什么.因此,如果glGenTextures开始在1处分配纹理ID,我可以返回GL_FALSE等.

c++ opengl textures

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

OpenGL中的透明纹理不会替换四元组

我试图在彩色四边形上方绘制一个部分透明的纹理,以便颜色透过透明部分,形成轮廓.这是代码:

// Setup
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);

// (...)
// Get image bits in object 't'
glBindTexture(GL_TEXTURE_2D, textureIDs[idx]); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexImage2D(GL_TEXTURE_2D, 0, 3, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits());
// (...)

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);

// Underlying coloured quad
glColor4d(0.0, 1.0, 0.0, 1.0);    
glBindTexture(GL_TEXTURE_2D, 0); 
glBegin(GL_QUADS);
  glVertex3d(coords11.first, coords11.second, -0.001);
  glVertex3d(coords12.first, coords12.second, -0.001);
  glVertex3d(coords21.first, coords21.second, -0.001);
  glVertex3d(coords22.first, coords22.second, -0.001);
glEnd();

// Textured quad    
glColor4d(1.0, 1.0, 1.0, 0.5);
glBindTexture(GL_TEXTURE_2D, textureIDs[castleTextureIndices[0]]); 
glBegin(GL_QUADS);
  glTexCoord2d(0.0, 0.0); …
Run Code Online (Sandbox Code Playgroud)

opengl textures alpha

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

NSMutableArray:如何修复此"EXC_BAD_ACCESS"代码?

我正在制作一个OpenGL应用程序,但是我收到了一条EXC_BAD_ACCESS消息.

这是我的代码:

//(draw function only, ask if you need more)
//objects: array of triangles/quads
//Triangle/Quad3D: should be obvious, I like OOP
//PS this is in a 'Composite Object' class
- (void)draw {
    //NSLog(@"%@",objects);
    NSMutableArray *quad, *tri;
    quad =  [NSMutableArray arrayWithCapacity:0];
    tri =   [NSMutableArray arrayWithCapacity:0];
    NSEnumerator *e = [objects objectEnumerator];
    id object;
    while (object = [e nextObject]) {
        if ([object isKindOfClass:[Triangle3D class]]) {
            [tri addObject:(Triangle3D *)object];
        } else if ([object isKindOfClass:[Quad3D class]]) {
            [quad addObject:(Quad3D *)object];
        }
    }
    NSLog(@"%d",[tri count]);
    NSLog(@"%d",[quad …
Run Code Online (Sandbox Code Playgroud)

opengl cocoa objective-c

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

openGL纹理只显示纹理的红色成分

我试图将图像纹理映射到单个多边形.我的图像正在被正确读取,但只有图像的红色平面被纹理化.

我在QGLWidget中这样做

我在读完后检查了图像,并且正在正确读取组件 - 即,我得到绿色和蓝色平面的有效值.

这是代码

QImageReader    *theReader = new QImageReader();

theReader->setFileName(imageFileName);
QImage  theImageRead = theReader->read();
if(theImageRead.isNull())
    {
        validTile = NOT_VALID_IMAGE_FILE;
        return;
    }
else
    {
        int newW = 1;
        int newH = 1;
        while(newW < theImageRead.width())
            {
                newW *= 2;
            }
        while(newH < theImageRead.height())
            {
                newH *= 2;
            }
        theImageRead = theImageRead.scaled(newW, newH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
// values checked in theImageRead are OK here
        glGenTextures(1,&textureObject);
        theTextureImage = QGLWidget::convertToGLFormat(theImageRead);
// values checked in theTextureImage are OK here
        glBindTexture(GL_TEXTURE_2D, textureObject);
        glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,newW, newH, 0, …
Run Code Online (Sandbox Code Playgroud)

opengl qt texture-mapping

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

OpenGL中的矩阵

所以我正在学习OpenGL作为主要资源的"红皮书".我正在阅读矩阵代数,旋转/缩放/变换矩阵,一切都很好,但我只是没有一个简单的事情.假设函数glLoadIdentity().它设置默认矩阵4x4.因此它设置3个顶点和1个点:(1,0,0)(0,1,0)(0,0,1)个顶点,(0,0,0)个点.但我的问题是,这些对应的是什么?一般来说,OpenGL中矩阵对应的是什么?我知道这些是轴心的方向.但是什么呢?相机?

opengl math 3d

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

轻量级OpenGL游戏的完美V-sync实现:需要一个小小的信息

在游戏中我们的互联网组装团队正在编程,我们假设我们的观众中的每个人都将在游戏中获得全速.

因此,为了节省视频RAM,并希望为显卡提供更多的空闲时间,使用没有双缓冲的V-sync将是我们的最佳选择.因此,在OpenGL中,我们需要知道如何做到这一点.

根据我的理解,V-sync是指图形卡在完成渲染单帧后暂停,直到该帧完成发送到显示设备.双缓冲不会暂停渲染操作(或者可能是暂停渲染操作,或者可能是特定于实现;不确定),因为它会在复制到帧缓冲区之前绘制到第二个缓冲区,以便监视器获得完整帧或不根本就是新帧(具体来说,是帧缓冲区中最后存储的图像).好吧,我们不需要这个功能,只要显卡只是在它需要时才写入帧缓冲区.

这是一个非常慢的在线游戏(但它非常有创意^ _ ^).实时行动非常少.因此,非常精确的用户输入不是必需的; 它可以在渲染帧之前随时从OS捕获为单个单元.

所以,为了做到这一点,我需要能够从OpenGL获得"Frame已经完成发送到监视器"的消息.可能吗?如果没有,最好的选择是什么?

该游戏目前仅针对Windows编程,但应该在几个月内完成Linux的工作.

opengl synchronization message buffering vsync

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