标签: opengl

错误LNK2019:函数"void __cdecl init(void)"中引用的未解析的外部符号_LoadShaders(?init @@ YAXXZ)

我正在学习OpenGL并尝试运行我的第一个程序.我已将所有文件包含在include,lib和bin文件夹中.我试图添加opengl32.lib; glut32.lib; glu32.lib; 在配置属性 - >链接器 - >输入,但它也没有工作.

我正在使用Visual Studio 2012.

///////////////////////////////////////////////////////////////////////
//
// triangles.cpp
//
///////////////////////////////////////////////////////////////////////

#include <iostream>
using namespace std;

#include <vgl.h>
#include <LoadShaders.h>

enum VAO_IDs { Triangles, NumVAOs };
enum Buffer_IDs { ArrayBuffer, NumBuffers };
enum Attrib_IDs { vPosition = 0 };

GLuint VAOs[NumVAOs];
GLuint Buffers[NumBuffers];

const GLuint NumVertices = 6;

//---------------------------------------------------------------------
//
// init
//

void
init(void)
{
    glGenVertexArrays(NumVAOs, VAOs);
    glBindVertexArray(VAOs[Triangles]);

    GLfloat vertices[NumVertices][2] = {
        { -0.90, -0.90 }, // Triangle 1
        { 0.85, -0.90 }, …
Run Code Online (Sandbox Code Playgroud)

opengl visual-studio-2012

-1
推荐指数
1
解决办法
4708
查看次数

有关地形编辑器的好教程吗?

我是3D游戏编程的新手,现在正在Windows上研究DirectX和OpenGL.但我想出了一个地形编辑器,但我无法在网上获得任何开放的教程或想法.

有没有一个很好的教程或开源代码来学习这个?

简单的一个很好,我只是想知道如何提升或降低地形,或在地图上放一棵树,如下面的视频.

如下视频:http://www.youtube.com/watch?v =oaAN4zSkY24

opengl directx terrain game-engine heightmap

-1
推荐指数
1
解决办法
1792
查看次数

为什么gcc和llvm之间的行为有所不同?

我正在努力编译一些开源库,然后我遇到了这个:

GLfloat campos[3] = {0.0 + modelview[2], 0.0 + modelview[6], 0.0 + modelview[10]};
Run Code Online (Sandbox Code Playgroud)

这在CentOS上编译很好,使用gcc,我真的期望它.

但是,在Mac上,使用带有llvm的XCode,它将无法编译,我不得不将其更改为:

GLfloat campos[3] = static_cast<GLfloat>(0.0 + modelview[2]), static_cast<GLfloat>(0.0 + modelview[6]), static_cast<GLfloat>(0.0 + modelview[10]);
Run Code Online (Sandbox Code Playgroud)

然后它奏效了.作为参考,modelview是另一个GLFloat,如下所示:

GLfloat modelview[16];
Run Code Online (Sandbox Code Playgroud)

由于modelview是一个GLFloat,static_cast正在应用于带有GLfloat的float总和的结果,但我确实希望免费得到它.

为什么行为不同?

c++ opengl xcode gcc llvm

-1
推荐指数
1
解决办法
126
查看次数

GLFW 3例编译问题VS2012

我安装了GLFW 3(包括将文件夹包含到VS\C\include,lib到VS\C\lib和dll到SySWOW54).现在,当我尝试从文档中编译第一个示例时

#include <GLFW/glfw3.h>
#include <stdlib.h>
#include <stdio.h>
static void error_callback(int error, const char* description)
{
    fputs(description, stderr);
}
static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
{
    if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
        glfwSetWindowShouldClose(window, GL_TRUE);
}
int main(void)
{
    GLFWwindow* window;
    glfwSetErrorCallback(error_callback);
    if (!glfwInit())
        exit(EXIT_FAILURE);
    window = glfwCreateWindow(640, 480, "Simple example", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        exit(EXIT_FAILURE);
    }
    glfwMakeContextCurrent(window);
    glfwSetKeyCallback(window, key_callback);
    while (!glfwWindowShouldClose(window))
    {
        float ratio;
        int width, height;
        glfwGetFramebufferSize(window, &width, &height); …
Run Code Online (Sandbox Code Playgroud)

opengl glfw visual-studio-2012

-1
推荐指数
1
解决办法
3604
查看次数

OpenGL的; 重叠的Alpha透明粒子

我正在用C语言编写一个OpenGL程序,它实现了alpha透明的Bill Boarding粒子,它通过pnglib使用PNG(透明度)作为纹理.但是,我发现粒子的透明区域仍然会替换它前面的粒子.换句话说,新调用的粒子虽然在某些区域是透明的,但是完全重叠在它们之前调用的一些粒子,相反,那些先前称为粒子的粒子应该透过透明度来显示.

为了可视化它所具有的效果,我附上一些图像来显示问题:

最初我称这些粒子从最老到最新: 正视图

但是,当视图更改时,重叠效果显而易见: 后视图

当我决定撤销通话顺序时,我得出相反的结论: 后视图订单已撤消 前视图顺序已反转

我认为解决这个问题的方法是将粒子从最远离相机调到最近.然而,遍历每个活动粒子,从最远到最近的顺序排序,然后每个显示帧调用每个粒子,计算量很大.我希望找到一个更简单,更有效的解决方案.我已经试过了,glBlendFunc()但没有sfactordfactor似乎工作.

c opengl transparent particles libpng

-1
推荐指数
1
解决办法
256
查看次数

如何将.obj文件转换为openGL?

我发现很难将.obj文件转换为openGL.我找到了我的模型,在这里我附上了main.cpp文件供您参考.我不确定如何运行文件.当我在openGL中调用所有这些文件时,我应该运行哪个文件.最初,当我在Visual Studio中打开OpenGL时,我调用了main.cpp文件并运行该文件.但它显示了许多错误.错误说无法找到PDB文件.那是什么?

opengl

-1
推荐指数
1
解决办法
6133
查看次数

GLUT键盘和鼠标功能不会被调用

int main(int argc, const char* argv[])
{
    glutInit(&argc, const_cast<char**>(argv));
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(640, 480);
    glutCreateWindow("Sample Window");
    glutDisplayFunc(render);

    glutMainLoop();
    return 0;
}

void keyboard(unsigned char c, int x, int y){
     std::cout << "Called Keyboard";
    if(c == 'a'){
        exit(0);
    }
}

void mouse(int button, int state, int x, int y){
    std::cout << "Called Mouse";
    if(button == GLUT_RIGHT_BUTTON){
        exit(0);
    }
}

void render(){
}
Run Code Online (Sandbox Code Playgroud)

所以,我对上面的代码有疑问.键盘和鼠标功能不会被调用.

我希望你能设法重现这个问题.

c++ opengl glut listeners

-1
推荐指数
1
解决办法
175
查看次数

英特尔 IPP 是否支持任何支持 OpenGL 的 GPU?

正如这里所说,OpenCV 使用 IPP,而 IPP 使用 GPU:

\n\n
\n

原来 OpenCV 正在使用 IPP,而 IPP 本身现在也可以使用 GPU\n。

\n\n

以防万一其他人在 google 上搜索“opencv gpu 速度较慢”并且不知道\n IPP GPU 支持;)

\n
\n\n

另外,我发现了这个

\n\n
\n

使用Intel\xc2\xae IPP异步优化增强现实管道

\n\n

使用 Intel\xc2\xae GPU优化 Total Immersion 的 D\'Fusion* 增强现实管道的性能和功耗

\n
\n\n

而且没有一个关键字:OpenCL、OpenACC、CUDA、nVidia,...

\n\n

与GPU相关的关键字只有一个:OpenGL

\n\n

这是否意味着Intel IPP仅支持Intel GPU?或者 Intel IPP 支持任何支持 OpenGL 的 GPU(nVidia GeForce、AMD Radeon)?

\n

opengl opencv opencl intel-ipp

-1
推荐指数
1
解决办法
874
查看次数

在 OpenGL 4.5 中对盒子进行纹理处理 -(不起作用)

我画了一个盒子。我添加了处理 vao 和 vbo 的基本类。

class BasicObject_V2
{
public:
    BasicObject_V2(GLuint typeOfPrimitives = 0){
        this->typeOfPrimitives = typeOfPrimitives;
        switch (this->typeOfPrimitives){
            case GL_QUADS: numVertsPerPrimitive = 4; break;
}}
void allocateMemory(){
        glGenVertexArrays(1, &vaoID);
        glBindVertexArray(vaoID);

        glGenBuffers(1, &vboID);
        glBindBuffer(GL_ARRAY_BUFFER, vboID);

        glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(vertexAttributes), &vertices[0], GL_STATIC_DRAW);

        glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 48, (const void*)0);
        glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 48, (const void*)12);
        glVertexAttribPointer(2, 4, GL_FLOAT, GL_FALSE, 48, (const void*)24);
        glVertexAttribPointer(3, 2, GL_FLOAT, GL_FALSE, 48, (const void*)40);

        glEnableVertexAttribArray(0);
        glEnableVertexAttribArray(1);
        glEnableVertexAttribArray(2);
        glEnableVertexAttribArray(3);
    }

    GLuint vboID;
    GLuint vaoID;
    GLuint typeOfPrimitives;
    GLuint …
Run Code Online (Sandbox Code Playgroud)

c++ opengl

-1
推荐指数
1
解决办法
1099
查看次数

如何在C++/OpenGL中直接输入纹理中的RGB(A)值?

我想涉足 OpenGL 项目中的一些程序纹理,但似乎没有任何效果。我所需要的只是将 RGB 和可能的 A 值输入到空纹理中,而不是从文件加载它。在实际的代码中我该如何做到这一点?

编辑:还没有主要代码,因为我没有发现任何有用的东西。目前最好的猜测是这样的:

void GenerateTexture()
{
    unsigned char image_data[16] = {0, 0, 150, 255, 125, 0, 0, 255, 0, 0, 150, 255, 125, 0, 0, 255};
    glGenTextures(1, &tex_obj);
    glBindTexture(GL_TEXTURE_2D, tex_obj);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, image_data);
}
Run Code Online (Sandbox Code Playgroud)

...像这样实现:

glBegin (GL_QUADS);
if (*irrelevant for question*){
    glTexCoord2f(0.0,1.0);
    glVertex3f (-0.45-cam.pos.val[0], 0.45-cam.pos.val[1], 0.45-cam.pos.val[2]);
    glTexCoord2f(0.0,0.0);
    glVertex3f (-0.45-cam.pos.val[0], -0.45-cam.pos.val[1], 0.45-cam.pos.val[2]);
    glTexCoord2f(1.0,0.0);
    glVertex3f (0.45-cam.pos.val[0], -0.45-cam.pos.val[1], 0.45-cam.pos.val[2]);
    glTexCoord2f(1.0,1.0);
    glVertex3f (0.45-cam.pos.val[0], 0.45-cam.pos.val[1], 0.45-cam.pos.val[2]);
}
glEnd ();
Run Code Online (Sandbox Code Playgroud)

...但是一旦使用超过 1x1 的纹理运行,它就会变成干净的白色。

c++ opengl textures

-1
推荐指数
1
解决办法
258
查看次数