C++ SDL和OpenGL的版本和实现是什么;我在用

C++ SDL和OpenGL的版本和实现是什么;我在用,c++,opengl,version,implementation,sdl,C++,Opengl,Version,Implementation,Sdl,我下载了SDL1.2.14 在Windows7上 我已经安装了Mobility Radeon X1800驱动程序 我在“VC++目录”中添加了SDL包含和库目录 我添加了以下附加依赖项: opengl32.lib; glu32.lib; SDL.lib; SDLmain.lib 我将SDL.dll添加到我的程序文件夹中 我没有添加任何opengl目录 #include "SDL.h" #include "SDL_opengl.h" bool running = true; int main

我下载了SDL1.2.14 在Windows7上 我已经安装了Mobility Radeon X1800驱动程序

<我使用微软Visual C++ 2010 Express。< /P> 我在“VC++目录”中添加了SDL包含和库目录

我添加了以下附加依赖项: opengl32.lib; glu32.lib; SDL.lib; SDLmain.lib

我将SDL.dll添加到我的程序文件夹中

我没有添加任何opengl目录

#include "SDL.h"
#include "SDL_opengl.h"

bool running = true;

int main(int argc, char* args[]) {
  SDL_Init(SDL_INIT_EVERYTHING);
  SDL_Surface* screen = SDL_SetVideoMode(640,480,32,SDL_OPENGL);

  glViewport(0,0,640,480);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluPerspective(45.0, 640/480, 1.0, 200.0);

  while(running) {
    glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_BUFFER_BIT);

    glMatrixMode(GL_MODELVIEW); // Swich to the drawing perspective
    glLoadIdentity();
    glTranslatef(0.0,0.0,-5.0);

    glBegin(GL_TRIANGLES);
      glVertex3f(-0.5f, 0.5f, 0.0f);
      glVertex3f(-1.0f, 1.5f, 0.0f);
      glVertex3f(-1.5f, 0.5f, 0.0f);
    glEnd();

    SDL_GL_SwapBuffers();
  }

  SDL_Quit();
  return 0;
}
这个程序画一个简单的三角形。 我在上面包含了2个头文件,我的Opengl代码可以正常工作

我不知道我的三角形是在GPU还是CPU上完成的。我使用的是什么openGL版本

我的意思是,我听说微软不再更新opengl文件了,他们使用opengl 1.1或类似的CPU实现

我如何知道我使用的是哪个版本的OpenGL?我可以在运行时检查吗

如何知道我使用的是CPU还是GPU实现?我可以在运行时检查吗

谢谢你看我的问题。

打电话给我


它只是重复SGI文档,并告诉您该函数位于
gl.h
opengl32.lib

实际上,当您安装视频卡驱动程序时,它会“替换”计算机中现有的opengl,因此您将使用该版本

OpenGL的多个版本同时存在,使用哪个版本取决于用于初始化OpenGL的HDC。例如,在本地登录会话中运行的应用程序可以获得硬件加速的GL,而在远程桌面会话中运行的应用程序可以获得基于CPU的实现(Ben Voigt)

VisualStudio当前附带的头文件和lib中只有OpenGL 1.1,因此要访问更现代的内容,需要调用wglGetProcAddress以获取指向新函数的指针


在这里,您可以找到更多信息:

优点,但您应该注意,“替换”并不真正准确。OpenGL的多个版本同时存在,使用哪个版本取决于用于初始化OpenGL的
HDC
。例如,在本地登录会话中运行的应用程序可以获得硬件加速的GL,而在远程桌面会话中运行的应用程序可以获得基于CPU的实现。