- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我已经查看了堆栈上关于此的其他几个问题,其中提到取消引用空指针,但我不明白这是否适用于我的代码。
当尝试生成 VAO 时,代码在 World.cpp 的第 33 行崩溃:
glGenVertexArrays(1, &vao);
给我标题中显示的错误。如果我注释掉该行程序运行正常。
PhaseEngineMain.cpp
#include "PhaseEngineMain.h"
#include "PhaseEngineController.h"
int main(int argc, char *argv[])
{
PhaseEngineController engine;
engine.start();
return 0;
}
PhaseEngineController.h
#pragma once
#include "SDL.h"
#include "glew.h"
#include "World.h"
#include <iostream>
class PhaseEngineController
{
public:
PhaseEngineController();
~PhaseEngineController();
void InitialiseEngine();
void IntitialseOpenGL();
void InitialiseSDL(Uint32 x, Uint32 y, Uint32 width, Uint32 height, Uint32 flags);
void InitialiseGLEW();
void SetClearColour(float r, float g, float b, float a);
void PrintIntialisationInfo();
void start();
void stop();
void run();
void UpdateLoop();
void RenderLoop();
void SwapBackBuffer();
private:
SDL_Window* window;
SDL_GLContext opengl_context;
World world;
bool running = false;
};
PhaseEngineController.cpp
#include "PhaseEngineController.h"
PhaseEngineController::PhaseEngineController()
{
InitialiseEngine();
InitialiseSDL(500, 500, 900, 600, SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL);
IntitialseOpenGL();
InitialiseGLEW();
PrintIntialisationInfo();
world.addMesh();
}
PhaseEngineController::~PhaseEngineController()
{
SDL_GL_DeleteContext(opengl_context);
SDL_DestroyWindow(window);
SDL_Quit();
}
void PhaseEngineController::InitialiseEngine()
{
std::cout << "Intialising...\n" << std::endl;
}
void PhaseEngineController::IntitialseOpenGL()
{
opengl_context = SDL_GL_CreateContext(window);
glClearColor(0, 0,0, 1);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
std::cout << "gl initialised - rendering ready" << std::endl;
}
void PhaseEngineController::InitialiseSDL(Uint32 x, Uint32 y, Uint32 w, Uint32 h, Uint32 f)
{
int error = SDL_Init(SDL_INIT_EVERYTHING);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 4);
window = SDL_CreateWindow("Phaze Engine", x, y, w, h, f);
std::cout << "SDL initialised - window created" << std::endl;
}
void PhaseEngineController::InitialiseGLEW()
{
GLenum err = glewInit();
if (GLEW_OK != err)
{
/* Problem: glewInit failed, something is seriously wrong. */
fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
}
else
{
std::cout << "GlEW Intialised - library ready" << std::endl;
}
}
void PhaseEngineController::SetClearColour(float r, float g, float b, float a)
{
glClearColor(r, g, b, a);
}
void PhaseEngineController::start()
{
if (running) return;
running = true;
run();
}
void PhaseEngineController::stop()
{
if (!running) return;
running = false;
}
void PhaseEngineController::run()
{
while (running)
{
//std::cout << "working" << std::endl;
RenderLoop();
//UpdateLoop();
}
}
void PhaseEngineController::UpdateLoop()
{
SDL_Event event;
while (running)
{
/* Check for new events */
while (SDL_PollEvent(&event))
{
/* If a quit event has been sent */
if (event.type == SDL_QUIT)
{
/* Quit the application */
running = false;
}
}
}
world.update();
}
void PhaseEngineController::RenderLoop()
{
world.render();
SwapBackBuffer();
}
void PhaseEngineController::SwapBackBuffer()
{
SDL_GL_SwapWindow(window);
}
void PhaseEngineController::PrintIntialisationInfo()
{
std::cout << "\nEngine Initialized...\n" << std::endl;
}
World.cpp
#include <iostream>
unsigned int vbo = 0;
unsigned int vao = 0;
float points[] = {
0.0f, 0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
-0.5f, -0.5f, 0.0f
};
World::World()
{
std::cout << "world created" << std::endl;
}
World::~World()
{
std::cout << "world destroyed" << std::endl;
}
void World::addMesh()
{
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, 9 * sizeof (float), points, GL_STATIC_DRAW);
glGenVertexArrays(1, &vao); //// <-- crashes here, this is line 33
std::cout << "mesh added " << std::endl;
}
void World::update() { }
void World::render() { }
最佳答案
尝试 this .
简短回答:默认情况下,GLEW 无法访问 OpenGL 核心配置文件的某些部分,因此在调用 glewInit()
之前说“glewExperimental = GL_TRUE;
”可能帮助。
关于c++ - 0xC0000005 : Access violation executing location 0x00000000. (OpenGL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22813625/
我正在尝试在 python 中编写正则表达式来查找目录路径:我的文本如下所示: text = "The public disk is: \\\\diskA\\FolderB\\SubFolderC\\
我想写一个LocationListener,它把最近最精确的位置作为它的位置。我打算在我的 LocationListener 中使用此代码: @Override public void
我想建立一个有光泽和 plotly 的交互式图表。 Shiny 有一个内置功能来获取有关用户交互的信息。比如:input$plot_click、input$plot_dblclick、input$pl
我正在使用 MobileFirst 提供的 WL.Device.Geo.acquirePosition(onGeoLocationSuccess, onGeoLocationFailure, opti
我最近开始使用 ionic 框架,它里面有 angular js。为了在屏幕之间导航,我使用了 $location.path 并且效果很好。但是,在我下载的一个示例中,我看到 $state.go 被用
谁能解释一下这种行为?我使用 history.pushState(null, null, '#test'); 推送历史状态。然后,当尝试使用console.log(window.location.ha
这里是相关代码: https://www.facebook.com/sharer/sharer.php?u={{$location.absUrl()}} https://www.facebook.c
这两个重定向之间有什么区别?我有一个应用程序,当我使用时,它可以在 chrome 和 android 4 上正常工作,但在 android 2.x.x 上不能正常工作 document.locatio
JavaScript 的区别是什么 window.location.href = window.location.href 和 window.location.reload() 功能? 最佳答案 如果
有什么区别 window.location.href="http://example.com"; window.location.replace("http://example.com"); wind
JavaScript 的区别是什么 window.location.href = window.location.href 和 window.location.reload() 功能? 最佳答案 如果
以下 3 个指令之间有区别吗? location ~* \.(png)$ { expires max; log_not_found off; } location ~ \.(png)$ {
位于正文末尾之前的以下脚本在 Internet Explorer 和 Chrome(以及任何其他浏览器)中都会被调用。但重定向到指定的 URL 仅发生在 IE 中。我还尝试了 window.locat
我正在使用 Angular ngRouter。我需要更改 url 路径以及搜索参数。我知道 $location.path 和 $location.search,但是有没有一个函数可以同时设置它们? 最
在angularjs中用$location和window.location哪个更好。 例如,我们可以使用$location.path() 或window.location.href 来完成同样的工作。
我在我的网站上使用上述 2 个命令。似乎它们对 95% 访问它应该触发的页面的人有效,但对其他人则不会。 有谁知道是否可以完全阻止这些 javascript 命令?我真的很头疼为什么它们有时不起作用。
这是我无法弄清楚的另一个错误。 我有这个类ExtendedLocation extends Location实例化时抛出 ClassCastExceptioncurrentGpsLocation =
我一直在尝试简单地将一个包含两个变量(一个字符串和一个位置)的类推送和读取到 firebase,但我一直收到此错误。 **com.google.firebase.database.DatabaseEx
我注意到 iPhone 上的“常用位置”似乎比监控 iOS 访问的应用程序 (https://developer.apple.com/reference/corelocation/clvisit) 使
在我的 javascript 代码中,在某些时候,我需要刷新窗口(用户上传了新图片但在页面中仍然可以看到它) 我想知道为什么 location.href = location.href 不刷新窗口?
我是一名优秀的程序员,十分优秀!