opengl version 1.2 api?

opengl version 1.2 api?

本文关键字:api version opengl      更新时间:2023-10-16

在哪里可以找到 2.0 之前版本的 OpenGL 文档?在网站上:opengl.org,他们只列出了新的api。

的情况是:我有一台我正在开发的笔记本电脑,并意识到opengl的某些方法不适用于这台计算机。

到目前为止,我已经通过针对用户版本的条件进行测试来解决了一些问题。那些更新于 2.0(含)的人将使用较新的代码,而那些版本低于 2.0 的人将使用 ARB 扩展方法。

例:

if(m_glVersion>2){//Integer value of your opengl version
    glGenBuffers(NUM_BUFFERS, m_vertexArrayBuffers);
    glBindBuffer(GL_ARRAY_BUFFER, m_vertexArrayBuffers[POSITION_VB]);
    glBufferData(GL_ARRAY_BUFFER, sizeof(model.positions[0]) * model.positions.size(), &model.positions[0], GL_STATIC_DRAW);
    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
    glBindBuffer(GL_ARRAY_BUFFER, m_vertexArrayBuffers[TEXCOORD_VB]);
    glBufferData(GL_ARRAY_BUFFER, sizeof(model.texCoords[0]) * model.texCoords.size(), &model.texCoords[0], GL_STATIC_DRAW);
    glEnableVertexAttribArray(1);
    glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, 0);
    glBindBuffer(GL_ARRAY_BUFFER, m_vertexArrayBuffers[NORMAL_VB]);
    glBufferData(GL_ARRAY_BUFFER, sizeof(model.normals[0]) * model.normals.size(), &model.normals[0], GL_STATIC_DRAW);
    glEnableVertexAttribArray(2);
    glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 0, 0);
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_vertexArrayBuffers[INDEX_VB]);
    glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(model.indices[0]) * model.indices.size(), &model.indices[0], GL_STATIC_DRAW);
}else{
    glGenBuffersARB(NUM_BUFFERS, m_vertexArrayBuffers);
    glBindBufferARB(GL_ARRAY_BUFFER, m_vertexArrayBuffers[POSITION_VB]);
    glBufferDataARB(GL_ARRAY_BUFFER, sizeof(model.positions[0]) * model.positions.size(), &model.positions[0], GL_STATIC_DRAW);
    glEnableVertexAttribArrayARB(0);
    glVertexAttribPointerARB(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
    glBindBufferARB(GL_ARRAY_BUFFER, m_vertexArrayBuffers[TEXCOORD_VB]);
    glBufferDataARB(GL_ARRAY_BUFFER, sizeof(model.texCoords[0]) * model.texCoords.size(), &model.texCoords[0], GL_STATIC_DRAW);
    glEnableVertexAttribArrayARB(1);
    glVertexAttribPointerARB(1, 2, GL_FLOAT, GL_FALSE, 0, 0);
    glBindBufferARB(GL_ARRAY_BUFFER, m_vertexArrayBuffers[NORMAL_VB]);
    glBufferDataARB(GL_ARRAY_BUFFER, sizeof(model.normals[0]) * model.normals.size(), &model.normals[0], GL_STATIC_DRAW);
    glEnableVertexAttribArrayARB(2);
    glVertexAttribPointerARB(2, 3, GL_FLOAT, GL_FALSE, 0, 0);
    glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, m_vertexArrayBuffers[INDEX_VB]);
    glBufferDataARB(GL_ELEMENT_ARRAY_BUFFER, sizeof(model.indices[0]) * model.indices.size(), &model.indices[0], GL_STATIC_DRAW);
}

http://www.songho.ca/opengl/gl_vbo.html 提供了一些关于网格创建和删除的良好来源,但是没有关于着色器的可用资源。

在glCreateProgram上出错,我目前的假设是它不支持低于2.0的版本 https://www.opengl.org/sdk/docs/man/html/glCreateProgram.xhtml。

我找不到此方法的 ARB 版本。有吗?变通办法?谢谢。

看看它 https://www.opengl.org/registry/就在OpenGL-2的正下方

OpenGL-1.2 规范:https://www.opengl.org/registry/doc/glspec121_bookmarked.pdf

从来没有HTML在线参考,但是大多数Linux发行版都有一个Mesa文档包,其中包含所有OpenGL函数的手册页;OpenGL-2.x是OpenGL-1.x的真正超集,没有任何折旧。

网格创建和删除 但是,没有关于着色器的可用信息。

GLSL着色器支持仅在OpenGL-2中引入;但是它们通常作为扩展提供,但是如果您的目标系统不支持OpenGL-2,则根本不可能有可编程硬件;可能是寄存器组合器,但仅此而已。