标签: opengl-3

OpenGL 3,OpenGL 4实现中的已知错误

正如我们最终都知道的那样,规范是一回事,而实现则是另一回事.我们自己造成的大多数错误,但有时并非如此.

我相信制作一个小清单是有用的:

GPU驱动程序中目前已知的错误是什么,与最近版本的OpenGL和GLSL的实现有关?

请记得始终发布相关的显卡驱动程序版本.

opengl drivers glsl opengl-3

9
推荐指数
1
解决办法
1958
查看次数

无法在QGLWidget中设置所需的OpenGL版本

我正在尝试在Qt 4.8.2中使用QGLWidget.我注意到QGLWidget创建的默认上下文没有显示3.1以上的OpenGL的任何输出.Qt wiki有一个教程,演示如何使用OpenGL 3.3绘制一个简单的三角形.当我尝试运行教程时,我得到一个空白屏幕.如果我将OpenGL版本更改为3.1,我会得到预期的输出(红色三角形).

我的视频卡支持OpenGL 4.2,QGLFormat::openGLVersionFlags()在创建QGLWidget之前调用显示Qt检测到OpenGL 4.2和所有以前的桌面版本.

这是另一个最小的例子:

#include <QApplication>
#include <QGLWidget>
#include <QDebug>
#include <QtDeclarative/qdeclarativeview.h>

int main(int argc, char * argv[])
{
    QApplication app(argc, argv);

    qDebug() << "OpenGL Versions Supported: " << QGLFormat::openGLVersionFlags();

    QGLFormat qglFormat;
    qglFormat.setVersion(4,2);  // get expected output with (3,1) and below, else blank window
    qglFormat.setProfile(QGLFormat::CoreProfile);
    qglFormat.setSampleBuffers(true);

    QGLWidget* qglWidget = new QGLWidget(qglFormat);

    QString versionString(QLatin1String(reinterpret_cast<const char*>(glGetString(GL_VERSION))));
    qDebug() << "Driver Version String:" << versionString;
    qDebug() << "Current Context:" << qglWidget->format();

    QDeclarativeView mainView;
    mainView.setViewport(qglWidget);
    mainView.setSource(QString("helloworld.qml"));
    mainView.show(); …
Run Code Online (Sandbox Code Playgroud)

c++ opengl qt opengl-3

9
推荐指数
1
解决办法
1万
查看次数

GLSL:"未声明的标识符'texture2D'调用无效"

我在Mac上,使用Swift,并使用OpenGL 3.2.我也在使用XCode 6.1 Beta,所以我认为这是最可能的解释,因为在我看来,这似乎没有意义.

我找不到任何证据表明不应该支持这个,但是这个片段着色器Invalid call of undeclared identifier 'texture2D'在编译期间导致错误:

#version 150

uniform sampler2D usTexture;

in vec2 vTextureCoord;

out vec4 FragColor;

void main() {
  vec4 color = texture2D(usTexture, vTextureCoord);
  FragColor = color;
}
Run Code Online (Sandbox Code Playgroud)

opengl macos glsl opengl-3

9
推荐指数
1
解决办法
5904
查看次数

GLSL是否使用SLI?OpenCL吗?什么是更好的,GLSL或OpenCL用于多个GPU?

OpenGL的GLSL在多大程度上利用了SLI设置?它是在执行时使用还是仅用于结束渲染?

同样,我知道OpenCL与SLI不同,但假设有一个GPU,那么它与多处理中的GLSL相比如何呢?

由于它可能取决于应用程序,例如常见转换或光线跟踪,您是否可以根据应用类型提供有关差异的见解?

opengl gpgpu glsl opencl opengl-3

8
推荐指数
1
解决办法
1875
查看次数

OpenGL 3.2核心配置文件指南

有人可以建议学习OpenGL 3.2核心配置文件的指南吗?

SDK很难阅读,我见过的大部分指南都只教授旧方法.

c++ opengl opengl-3

8
推荐指数
1
解决办法
5416
查看次数

使用glDrawArrays绘制VBO在OpenGL 2.1中工作,但在OpenGL 3.x中不工作

代码的核心(显示红色矩形):

//bind program, set uniforms, bind vbo
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0,0);
glDrawArrays(GL_TRIANGLES, 0, 6);
glDisableVertexAttribArray(0);
//unbind vbo, unbind program
Run Code Online (Sandbox Code Playgroud)

当我上下文切换到的OpenGL 3.x的这一代码将停止工作(我可以看到背景的唯一的颜色),但是当我初始化VAO以同样的方式与上面的代码,然后我结合VAO并调用调用glDrawArrays,然后它工作.

可能是什么问题呢?如何在不使用VAO的情况下绘制VBO?

(着色器非常简单,只有mulitplies矩阵和ps输出红色)

opengl vbo opengl-3

8
推荐指数
1
解决办法
3246
查看次数

替换现有VAO中的VBO

我有关于各种顶点属性维也纳组织一个VAO:顶点位置,顶点法线,和元件阵列VBO(所有STATIC_DRAW),从而呈现一个实例只要求:

glBindVertexArray(vao);
glDrawElements(GL_TRIANGLES, <count>, <type>, 0);
Run Code Online (Sandbox Code Playgroud)

但是,我想绘制一个对象的多个实例(我仅限于OS X GL 3.2核心配置文件BTW),每个实例具有不同的顶点纹理(s,t)坐标.texcoord VBO使用STREAM_DRAW提示(尽管我可能会使用DYNAMIC_DRAW).

它是更有效地结合VAO,结合当前texcoord VBO,并通过设置属性指针glVertexAttribPointer,最终确定与VAO glBindVertexArray(0)并画出一个带有不同纹理坐标的新实例?或者更新VAO的成本是否会使这种方法变得糟糕?如何glBufferSubData在绑定的VAO中更新texcoord VBO ?

在对单独的方法进行基准测试之前,我真的很感激一些反馈,因为错误的选择将导致重大的重构.

opengl performance vbo opengl-3

8
推荐指数
1
解决办法
1234
查看次数

在OpenGL中使用fence同步对象

我试图寻找可以在OpenGL中使用Sync Objects的场景.我的理解是,一旦放入GL命令流(使用glFenceSync())的同步对象将在执行并实现所有GL命令后发出信号.如果同步对象是同步原语,为什么我们不能手动发信号呢?这个功能究竟在哪里可以帮助GL程序员?

以下方案是否正确?

Thread 1 :

Load model
Draw()
glFenceSync()

Thread 2 :

glWaitSync();
ReadPixels
Use data for subsequent operation.
Run Code Online (Sandbox Code Playgroud)

这是否意味着除非在线程1中调用glFenceSync(),否则我无法启动线程2?

opengl synchronization opengl-3

8
推荐指数
1
解决办法
4613
查看次数

最简单,最简约的opengl 3.2可可项目

多年来我一直使用传统的openGL和cocoa,但我现在正努力转向openGL 3.2.互联网上有几个例子,但它们都太复杂了(很多甚至在XCode 5.1下都不再编译).有人可以写一个最简单,最简单的最小可可代码的例子,只是为了在NSOpenGLView中绘制一个读三角形吗?(没有花哨的着色器,没有displayCallbacks,代码行越少越好).

opengl cocoa opengl-3

8
推荐指数
2
解决办法
3852
查看次数

如何在没有VAO的情况下使用VBO和OpenGL核心配置文件?

我在使用顶点缓冲区对象时遇到了麻烦,而没有使用顶点数组对象.

我的理解是VAO只是封装了VBO周围的状态.但是,如果没有VAO,VBO不应该可用吗?

这是一个小例子.有了use_vao=true这个工作正常(橙色呈现矩形).有了use_vao=false这使它什么,并生成GL_INVALID_OPERATION时的错误glDrawElements.

// make sure the modern opengl headers are included before any others
#include <OpenGL/gl3.h>
#define __gl_h_
#include <GLUT/glut.h>
#include <string>
#include <cassert>

// For rendering a full-viewport quad, set tex-coord from position
std::string tex_v_shader = R"(
#version 330 core
in vec3 position;
void main()
{
  gl_Position = vec4(position,1.);
}
)";
// Render directly from color or depth texture
std::string tex_f_shader = R"(
#version 330 core
out vec4 …
Run Code Online (Sandbox Code Playgroud)

c++ opengl opengl-3 opengl-4

8
推荐指数
2
解决办法
3094
查看次数

标签 统计

opengl ×10

opengl-3 ×10

c++ ×3

glsl ×3

vbo ×2

cocoa ×1

drivers ×1

gpgpu ×1

macos ×1

opencl ×1

opengl-4 ×1

performance ×1

qt ×1

synchronization ×1