2 qq 31310053 qq_31310053 于 2016.02.05 17:46 提问

用VS2013编译opengl编程宝典第五版的第一个画三角形的例子,编译后程序运行不了

![![图片说明](http://img.ask.csdn.net/upload/201602/05/1454665400_904503.png)图片说明](http://img.ask.csdn.net/upload/201602/05/1454665388_987111.png)图片说明
代码如下:
#include
#include
#define FERRGLUT_STATIC
#include
#include
GLBatch trianglebatch;
GLShaderManager shadermanager;
int main(int argc, char* argv[])
{
void RenderScene();
void ChangeSize(int w, int h);
void SetupRC();
gltSetWorkingDirectory(argv[0]);
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
glutInitWindowSize(800, 600);
glutCreateWindow("triangle");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
GLenum err = glewInit();
if (GLEW_OK != err){
fprintf(stderr, "GLEW Error:%s\n", glewGetErrorString(err));
return 1;
}
SetupRC();
glutMainLoop();
return 0;
}
void ChangeSize(int w, int h)
{
glViewport(0, 0, w, h);
}
void SetupRC()
{
glClearColor(0.0f, 0.0f, 1.0f, 1.0f);
shadermanager.InitializeStockShaders();
GLfloat vVerts[9] = {
-0.5f, 0.0f, 0.0f,
0.5f, 0.0f, 0.0f,
0.0f, 0.5f, 0.0f };
trianglebatch.Begin(GL_TRIANGLES, 3);
trianglebatch.CopyVertexData3f(vVerts);
trianglebatch.End();
}
void RenderScene()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
GLfloat vRed[3] = { 1.0f, 0.0f, 0.0f };
shadermanager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
trianglebatch.Draw();
glutSwapBuffers();
}
网上看说有“0xC0000005: 写入位置 0x000000AC 时发生访问冲突”这种问题是指针没有赋值,可是我是按照例子敲的代码啊。求大神解答。

6个回答

caozhy
caozhy   Ds   Rxr 2016.02.05 23:03

贴出来的图都没有重点,重点是发生错误的行,以及此时各个指针是否正确。自己调试下,如果不行,把你的程序打包(包括用到的库)到百度网盘,晚上可以帮你调试下。

qq_31310053
qq_31310053 这样可以吗?谢谢啦
接近 2 年之前 回复
qq_31310053
qq_31310053 http://pan.baidu.com/s/1bnLEp4r
接近 2 年之前 回复
qq_31310053
qq_31310053   2016.02.05 17:49

图片说明
图片说明
再放几张图

qq_31310053
qq_31310053   2016.02.05 17:49

图片说明

qq_31310053
qq_31310053   2016.02.05 17:50

图片说明

RaspberryMonster
RaspberryMonster   2016.02.05 19:36

目测是空指针 检查下对象有没有初始化

91program
91program   Ds   Rxr 2016.02.05 20:30

建议你单步调试一下,看看具体是哪一句出错了。
代码中没有使用指针,但并不能代表有对象或者其它 OPENGL 的东东未初始化。

qq_31310053
qq_31310053 回复91program: 还是不行呢
接近 2 年之前 回复
91program
91program 回复qq_31310053: RenderScene 函数的实现是不是有问题,换一个试试,如:http://baike.baidu.com/view/7984967.htm
接近 2 年之前 回复
qq_31310053
qq_31310053 glutDisplayFunc(RenderScene);是从这一句开始有问题的。
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!