- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我是 OpenGL 编程的新手,一切都很好,直到我突然收到段错误,现在无法摆脱它。任何人都可以发现段错误并向我解释吗?
注意:虽然这是一项作业,但我不是来这里寻找答案的。事实上,我什至不会提及分配细节,甚至不会发送完整代码(尽管以下代码也会导致段错误):
# include <stdio.h>
# include <stdlib.h>
# ifdef __APPLE__
# include <OpenGL/gl.h>
# include <OpenGL/glu.h>
# include <GLUT/glut.h>
# else
# include <GL/gl.h>
# include <GL/glu.h>
# include <GL/freeglut.h>
# endif
# include <iostream>
# include <ctime>
# include <cmath>
using namespace std;
#define GRID 50
/* Eye location */
float eye[]={5,5,5};
void initDefaults(void){
glClearColor(0, 0, 0, 0);
glColor3f(1, 1, 1);
glMatrixMode(GL_PROJECTION);
glFrustum(-10,10,-10,10,0,100);
gluPerspective(45,1,1,100);
}
/* TEMPORARY */
void createGrid(){
//After checking, I narrowed down the segmentation fault to here.
glColor3f(0, 0, 0);
printf("help");
glBegin(GL_POINTS);
glVertex3f(25,25,25);
glEnd();
}
/* displays UI to user */
void display(void){
//Clears the board upon (re)display
glClearColor(1.0,1.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
//Enables backface culling
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
//Sets up the perspective matrix (viewing/camera)
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(eye[0], eye[1], eye[2], GRID/2, GRID/2, 0, 0, 1, 0);
//I believe the segmentation fault occurs in here.
//************************************
createGrid();
//************************************
//Used for double-buffering
glutSwapBuffers();
}
/* main function - program entry point */
int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitWindowSize(600, 600);
glutInitWindowPosition(200,200);
glutCreateWindow("Terrain");
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA);
glutDisplayFunc(display);
gluOrtho2D(-1, GRID + 1, -1, GRID + 1);
initDefaults();
glutMainLoop();
return(0);
}
最佳答案
仔细检查您的开发环境。您的代码(到目前为止)非常好,您遇到的问题可能是由不匹配的库引起的。例如,如果您在 Linux 上进行开发,libGL.so
必须与 GPU 驱动程序和版本完全匹配(或者使用纯粹的间接 GLX 上下文,这通常只发生在远程 X11 上)。
关于c++ - 键入 glBegin() 后出现 OpenGL 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40417004/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我正在使用 Cocoa + OpenGL 为 MacOS 构建一个小游戏来创建 GUI。该游戏是 BoulderDash-Clone,因此它基本上是一个 2D 对象数组,而且数量不多(一个关卡大约有
我以后还能用这些方法吗?另外,如果没有,有人可以推荐一些关于 lwjgl 中现代 OpenGL 的好教程吗?谢谢 最佳答案 在LWJGL中,“已弃用”只是意味着它已经过时了,我真的怀疑glBegin是
如标题所示,我希望每帧/更新只能调用一次 glBegin 和 glEnd ,因为我听说并且正在经历,如果每次更新多次调用它,速度会大大减慢。 这是我的渲染函数的代码: GL11.glTranslate
我正在创建一个程序,允许我在 3 个空间中绘制点,使用 Catmull-Rom 样条连接它们,然后围绕样条绘制一个圆柱体。我正在使用 GL_TRIANGLES_STRIP 以短间隔连接样条曲线周围绘制
我想制作一个 OpenGL 游戏,但现在意识到我在学校学到的东西 -> 直接通过 glBegin/glEnd 绘制对象 -> 是老式的和糟糕的。在互联网上阅读我发现顶点缓冲区对象和 GLSL 是 3d
我正在学习一些关于 OpenGL 的教程,但遇到了一个问题。我构建了一个名为 Mesh 的类,它在其构造函数中采用顶点数组并生成顶点数组等来进行绘图。问题是我什么也没看到。这是界面: class Me
我尝试设计一个场景,其中有 3 个球体和一条水平线作为赤道。我必须画出 3 个球体,但我不知道为什么线没有画出来。 这是我的代码,如果你能看出我哪里错了: #include #include vo
我正在计算很多顶点,然后用四边形 strip 显示它们以获得 3D 曲面图。 我对某些顶点有一种奇怪的行为,以不可预测的方式改变颜色。我尝试修复它,巧合的是,当我在前后放置 glPushMatrix(
我正在尝试并排绘制 2 个不同颜色的方 block ,我的问题是我无法让 glTranslatef 将我的第二个方 block 向右移动,第二个方 block 只是在第一个方 block 上绘制。 v
绘制大量点时,有没有办法改变点的大小?我知道有 glPointSize(float),但是有没有办法在“批处理”或数组中做到这一点? 我希望点具有基于数据属性的不同大小。例如每个点都有 x、y、z 和
我正在尝试学习为 iPhone 编写 OpenGL 应用程序。如何移植以下代码以与 OpenGL-ES 一起使用?我知道我必须将顶点存储在数组中,然后调用 glDrawArrays(),但是有没有最佳
经过多年关于“顶点缓冲对象”(VBO)的了解,我终于决定尝试使用它们(我的东西通常对性能没有要求,显然...) 我将在下面描述我的实验,但总而言之,我发现“简单”直接模式(glBegin()/ glE
glBegin(GL_TRIANGLE_STRIP); for(i; i <= degree; i++) { float
此代码仅呈现十二面体并完全忽略 glBegin(GL_TRIANGLES) block : glutSolidDodecahedron(); glBegin(GL_TRIANGLES); glNorm
我一直在我的函数中使用 glDrawArrays。 由于某些原因,我在使用 glDrawArrays 绘图时掉了大约 400fps。 为了测试,我调用了 Print 函数 2000 次。 不太确定为什
将调用 glBegin 和 glEnd 的代码括在方括号中的目的是什么?它是否具有程序或功能目的,或者仅仅是为了美学和风格?下面的代码是用 C 写的。 glBegin(GL_POLYGON); glC
我有这个程序,您可以在下面看到。程序应该将某些内容渲染到纹理,并且渲染的纹理应该被绘制以显示。但是当调用 glBegin(GL_QUADS) 时,程序在 display() 函数处失败。程序结束打印
我在 StackOverflow 上的某个地方找到了这种跨平台的绘制文本的方法: def drawText(x, y, text):
我是 OpenGL 编程的新手,一切都很好,直到我突然收到段错误,现在无法摆脱它。任何人都可以发现段错误并向我解释吗? 注意:虽然这是一项作业,但我不是来这里寻找答案的。事实上,我什至不会提及分配细节
我是一名优秀的程序员,十分优秀!