用C++执行一次类代码
Execute class code once C++
我正在尝试使用sdl作为openGL的窗口管理器。我研究过使用Windows本机API,但看起来很困惑。
话虽如此,我有一个class Window
,我想现在就把所有SDL的东西都打包到我的窗口管理中。想象一下,如果我发现我不想使用SDL,它会让我稍后交换窗口管理。
我猜很多openGL初始化代码只需要运行一次。
if(SDL_Init(SDL_INIT_EVERYTHING) < 0 ) {
exit(0x1);
}
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 32);
SDL_GL_SetAttribute(SDL_GL_ACCUM_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ACCUM_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ACCUM_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ACCUM_ALPHA_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 2);
然后在类构造函数中,我可以使用创建窗口
Window::Window(int winW, int winH) {
if((Surf_Display = SDL_SetVideoMode(winW,winH,32, SDL_HWSURFACE | SDL_GL_DOUBLEBUFFER | SDL_OPENGL | SDL_RESIZABLE )) == NULL) {
exit(2);
}
glClearColor(0, 0, 0, 0);
glClearDepth(1.0f);
glViewport(0, 0, winW, winH);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, winW, winH, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
glEnable (GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glLoadIdentity();
}
我只是不知道该怎么做。如果我把代码放在头中定义类之前,这是否达到了预期的结果?
;init code
;class window { };
最简单的事情是将初始化代码放入一个函数中,然后从main
:调用该函数
/* header */
void init_window_management (void);
/* some source file */
void init_window_management (void) {
// your code
}
/* main file */
// ... also include that header ...
int main(int argc, char ** argv) {
// ...
init_window_management();
// ... use instances of the window class
}
然后还有std::call_once
。
如果我把代码放在头中定义类之前,这是否达到了预期的结果?
没有。标头用于函数和类声明。执行(成员)函数的代码,然后通过main
函数(最终)调用这些函数。
相关文章:
- 谷歌基准测试,如何只调用一次代码?
- 代码执行/CPU 速度每 2 秒减慢一次
- 代码只输出一次 std::vector,而不是多次输出
- 我如何使一行代码可以选择,但在已经选择过一次后不重新选择
- 循环在此代码中仅迭代一次,而在另一个代码中正确迭代
- Qt C++每秒运行一次代码
- 如何将.txt文件中的多维数组放入代码中,并一次打印一行
- 代码无限循环不能只打印一次
- 限制C++更新速率.为什么此代码每秒更新一次,而不是每秒更新 60 次
- 每 t 毫秒执行一次 c++ 代码
- C++ SQLite 查询只工作一次。我的代码有什么问题?
- 对于多少种类型的 x86 处理器,Ngen 和 .net 本机一次创建本机代码
- 从第二次调用开始在函数中执行一段代码
- 如何在没有外部标志的情况下只在循环中运行一次代码
- 如何在ubuntu中创建和运行一个脚本,该脚本每5分钟运行一次并关闭一个c代码
- 在没有默认构造函数的OpenMP中,每个线程执行一次代码
- 如何只执行一段代码一次
- 代码是打印相同的值时,它应该随机生成每一次,而且它不打印数组中的第一个值
- 在精确的时间运行代码,每小时运行一次
- 每X秒执行一次代码,但在事件发生时立即中断