Tag: opengl

错误LNK2019:未解析的外部符号

虽然我想编译我的opengl代码我得到以下错误: Error 1 error LNK2019: unresolved external symbol __imp__glewInit@0 Error 2 error LNK2019: unresolved external symbol __imp__glewGetErrorString@4 Error 3 error LNK2001: unresolved external symbol __imp____glewAttachShader Error 4 error LNK2001: unresolved external symbol __imp____glewCompileShader Error 5 error LNK2001: unresolved external symbol __imp____glewCreateProgram Error 6 error LNK2001: unresolved external symbol __imp____glewCreateShader Error 7 error LNK2001: unresolved external […]

GLUTesselator的替代品?

我想知道是否有一个库或其他方法在OpenGL中生成多轮廓多边形。 我做了代码分析,GLUTesselator正在杀死我的循环。 谢谢 赏金 对于具有GPL兼容许可证的库而言,+ 50,理想情况下是3D(第二好的是2.5D,就像GLUtesselator本身一样。)

如何使用OpenGL 3.x VBO渲染动态世界?

虽然OpenGL 3.x本身似乎很少有最新的参考,但OpenGL的实际低级操作相对简单。 然而,我在试图甚至概念化如何操纵VBO以呈现动态世界时遇到了严重的麻烦。 显然,旧的直接模式方式是不适用的,但从那里我去哪里? 我是否编写某种场景结构,然后将其转换为一组顶点并将其传输到VBO,我将如何存储翻译数据? 如果是这样,那么代码看起来会如何? 基本上真的不确定如何继续。

C – 无效使用非左值数组

我有一个矩阵结构: typedef struct Matrix { float m[16]; } Matrix; 当我尝试调用此函数时: memcpy(m->m, MultiplyMatrices(m, &translation).m, sizeof(m->m)); 我在编译时遇到错误说: 错误:无效使用非左值数组 MultiplyMatrices返回一个矩阵。 如果我使用gcc将文件编译成对象,我只会得到此错误,如果我使用g ++编译对象我没有错误。 我甚至不确定错误意味着什么,我感觉它与存储在MultiplyMatrices返回的Matrix中的数组有关。 如果您需要查看更多代码,请告诉我们。 此代码来自本教程: OpenGL Book第4章 ps我想保持这段代码严格iso / ansi,如果没有其他解决方案,那么我只需处理它。 编辑:我最终创建一个临时矩阵然后复制数组。 Matrix tempMatrix; … tempMatrix = MultiplyMatrices(m, &translation); memcpy(m->m, tempMatrix.m, sizeof(m->m));

glDrawArrays不工作。 在GTK3中使用GtkGLArea

我正在尝试使用GtkGLArea小部件。 似乎没有类似问题的答案与这种情况有关。 glClear()可以设置背景颜色很好但实际上绘制三角形数组不是。 根据本教程,下面的代码应该可行。 编辑: 21/5/2015:添加着色器,仍然得到相同的结果。 下面的新代码 这是main.c和SConstruct因此您可以使用scons构建: 已解决:标题SOLUTION:main.c下的工作代码可以使用相同的SConstruct文件构建示例 main.c中 #include #include #include #include #include #include #include #include #include #define IGNORE_VAR(type, identifier) \ { \ type IGNORED_VARIABLE_abcd = identifier; \ identifier = IGNORED_VARIABLE_abcd; \ } const GLchar *vert_src =”\n” \ “#version 330 \n” \ ” \n” \ “layout(location = 0) in vec2 in_position; \n” \ […]

通过GLSL将YV12转换为RGB的问题

我正在尝试使用GLSL着色器完成本文中提到的YV12到RGB转换 。 我的应用程序从磁盘加载原始YV12帧并尝试使用GLSL着色器执行转换。 但是,生成的图像会垂直翻转并出现一些颜色问题。 我认为问题可能是图像被读取为char (1字节)数组,然后转换为GLushort数组(2字节)。 你怎么看? 这是原始YUV框架的样子: 并且可以从此处下载应用程序加载的原始框架 。 这是我得到的输出: 我正在分享下面的应用程序的源代码: #include #include #include #include #include #include #include #include #include #include #ifndef SEEK_SET # define SEEK_SET 0 #endif static GLfloat Xrot = 0, Yrot = 0, Zrot = 0; static GLint ImgWidth, ImgHeight; static GLushort *ImageYUV = NULL; static void DrawObject(void) { glBegin(GL_QUADS); glTexCoord2f(0, […]

从RGB到BGRA的快速矢量化转换

在关于将RGB转换为RGBA和ARGB转换为BGR的一些先前问题的后续内容中,我想通过SSE加速RGB到BGRA的转换。 假设一台32位机器,并想使用内在函数 。 我很难将源缓冲区和目标缓冲区对齐以使用128位寄存器,并寻求其他精明的矢量化解决方案。 矢量化的例程如下…… void RGB8ToBGRX8(int w, const void *in, void *out) { int i; int width = w; const unsigned char *src= (const unsigned char*) in; unsigned int *dst= (unsigned int*) out; unsigned int invalue, outvalue; for (i=0; i<width; i++, src+=3, dst++) { invalue = src[0]; outvalue = (invalue<<16); invalue = src[1]; outvalue […]

为什么glGetString(GL_VERSION)会导致Seg错误?

我在Fedora 13上学习OpenGL,并注意到对glGetString的调用导致了seg错误。 我已经刮了谷歌,但没有解决方案。 代码很简单: #include int main() { glGetString(GL_VERSION); return 0; } 编译命令: g++ -lGL main.cpp -o test.bin 运行结果: $ ./test.bin Segmentation fault (core dumped) OpenGL信息: $ glxinfo | grep OpenGL OpenGL vendor string: Tungsten Graphics, Inc OpenGL renderer string: Mesa DRI Intel(R) IGDNG_M GEM 20100328 2010Q1 OpenGL version string: 2.1 Mesa 7.8.1 OpenGL shading […]

如何强制openGL绘制非凸填充多边形

多边形以凸起形状绘制似乎是标准。 请参阅stackoverflow.com/questions/15556929/open-gl-polygon但是,如果我选择填充它,则不适合我。 如何在保持我定义的形状的同时填充多边形? void drawFloor(){ // White glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // GL_LINE works the way I want it too //glDisable(GL_POLYGON_SMOOTH); // has no effect 🙁 glBegin(GL_POLYGON); glColor3f(1.0, 1.0, 1.0); glVertex3f(0, 0, 0); //0 glVertex3f(2*boxSize, 0, 0); //1 glVertex3f(2 * boxSize, -boxSize, 0); //2 glVertex3f(5 * boxSize, -boxSize, 0); //3 glVertex3f(5 * boxSize, 4 * boxSize, 0); […]

3d加速度计计算方向

我有3轴的加速度计值(通常只有重力包含介于-1.0和1.0之间的数据): float Rx; float Ry; float Rz; 我做了躯体计算,然后我得到每个轴的角度。 float R = sqrt(pow(Rx,2)+pow(Ry,2)+pow(Rz,2)); float Arx = acos(Rx/R)*180/M_PI; float Ary = acos(Ry/R)*180/M_PI; float Arz = acos(Rz/R)*180/M_PI; 然后我在opengl中设置框角度的值 rquad = Arx; yquad = Ary; 哪个旋转我的盒子: glRotatef(yquad,1.0f,0.0f,0.0f); glRotatef(rquad,0.0f,1.0f,0.0f); 它适用于半球。 我想使用完整的球体,我知道我必须使用Arz值使其工作,但我不知道如何使用它进行此旋转。 你可以帮帮我吗? 更新:最终答案在我的情况下: rquad = -atan2(Rx/R, Rz/R)*180/M_PI; yquad = -atan2(Ry/R, Rz/R)*180/M_PI;