admin管理员组

文章数量:1631138

windows配置opengles3开发环境https://dn-maxiang.qbox.me/res-min/themes/marxico.css’ rel=’stylesheet’>

windows配置opengles3开发环境

1.使用VS进行配置

使用VS配置opengl比较简单,VS自带VC环境,所以只需要下载opengl库和arm模拟器即可。同时下载了《opengles3.0编程指南》中的实例源码,作为运行样例。具体步骤如下:

  • 工具准备
    • 《opengles3.0编程指南》源码下载:https://github/danginsburg/opengles3-book
    • 下载mail opengl es模拟器,用来运行opengl程序(推荐32位zip包,不需要安装文件):http://malideveloper.arm/resources/tools/opengl-es-emulator/
    • CMake 用来编译源码工程:https://cmake/download/
  • 环境配置
    • 找到VS的VC文件夹,根据版本不同,有所不同,我安装的2017企业版,路径为:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.12.25827
    • 将mail模拟器zip包中的include文件夹中的所有文件文件夹拷贝到VC环境下的include文件夹中
    • libEGL.liblibGLESv2.lib这两个lib文件,拷贝到VC的lib/x86文件夹下
    • libEGL.dlllibGLESv2.dll俩个dll文件,拷贝到VC目录bin/Hostx86/x86文件夹下
    • 这样opengl环境搭建基本完成
  • 使用CMake将源码编译成VS工程
    • 安装CMake(是否需要提前安装MinGW需要进行验证)
    • 打开CMake,Brower Source选择源码工程路径,Brower Build选择编译的输出目录
    • 执行Configure选择合适的VS版本
    • 这时,执行Generate会报错,原因是没有正确的指定EGLOPENGLES3库路径,因此需要指定正确的EGLOPENGLES3库路径
    • 这时CMake的界面应该如下:
      • 指定EGL库文件路径,配置EGL_LIBRARY为VC目录中libEGL.lib的位置
      • 执行opengles3库文件路径,配置OPENGLES3_LIBRARY为VC目录下libGLESv2.lib文件路径
    • 这时在执行Generate就能够在输出位置中获取到对应的VS工程
    • 在build目录中打开生成的.sin或者直接在CMake执行Open Porject,打开VS工程,将需要执行的工程设置为启动项,运行程序,即可看到窗口以及绘制的图形
  • 如果是想要将Common直接作为库进行使用,则需要以下步骤
    • 第一次成功运行build出的VS工程后,可以看到VS工程中Common目录下生成了Debug文件夹,拷贝Debug文件夹下的Common.lib文件到VC的lib/x86文件夹(和上文中libEDG.lib两个库文件相同目录)下
    • 配置依赖的信息 , 右键项目–>属性–>连接器–>输入–>附加依赖项,并输入libEGL.lib;libGLESv2.lib;Common.lib;
    • 运行,没问题,大吉大利,今晚吃鸡(^▽^)
    • 这样就可以直接使用Common中的代码信息了

2.使用clion进行配置

上文介绍了使用VS配置Opengles环境的方式,虽然VS配置环境比较简单,但使用VS进行opengles开发有两个缺点:臃肿和智能提示不智能。同时本着一直以来对JetBrains的喜爱,决定使用CLion进行opengles开发。开发所使用的工具又可以分为两种:使用freeglut和使用上文中的模拟器。以下两种方法都将进行配置

1.使用freeglut(opengl,而不是opengles)

使用freeglut的配置方式,主要参考了该博文:https://blog.csdn/m0_37748310/article/details/80391026 特此感谢

  • 工具准备:
    • MinGW,既然是使用CLion,而不是使用VC环境,所以选择MinGW作为编译工具,可以参考https://blog.csdn/ksksjipeng/article/details/52353258对CLion进行安装配置
    • freeglut,作为opengl中glut使用最广泛的开源工具,freeglut提供了丰富而使用的接口,下载地址:https://www.transmissionzero.co.uk/software/freeglut-devel/,需要其中的MinGW版本
    • CLion,(废话!!!)
  • 配置freeglut环境:
    • freeglut压缩包下载解压后,包含bin include lib三个文件夹
    • 将include/GL文件夹下拷贝到minGW/include/GL文件夹下(如果是已经拷贝过了opengles3的include文件,本条可以跳过)
    • 64位机的话将压缩包/lib/x64中的.a文件拷贝到mingw/lib文件夹下,32位机的话应该拷的是压缩包/lib中的两个.a文件
    • 64位机把压缩包/bin/x64里的文件拷贝到C://Windows//SysWOW64下,32位机压缩包/bin下文件到C://Windows//System32下(即参考博文中提及的第三步,经测试并没有什么效果,算是为参考博文博主补充验证)
    • 这样freeglut环境基本配置完毕
新建CLion工程
  • 修改CMake配置文件
    • 其中set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -D FREEGLUT_STATIC")一定需要加上,虽然暂时不清楚作用

 
 
  
  cmake_minimum_required(VERSION 
  
  3.9)

 
 
 
 
  
  project(OpenGL_3)

 
 
 
 
  
  

 
 
 
 
  
  set(CMAKE_CXX_FLAGS 
  
  "${CMAKE_CXX_FLAGS} -std=c++11 -D FREEGLUT_STATIC")

 
 
 
 
  
  

 
 
 
 
  
  add_executable(OpenGL_3 glut.cpp )

 
 
 
 
  
  target_link_libraries(OpenGL_3 freeglut_static opengl32 winmm gdi32 glu32.lib)

 
 
  • 编写main.cpp代码(直接使用了参考博文中的代码)

 
 
  
  #include <GL/glut.h>

 
 
 
 
  
  #include <stdio.h>

 
 
 
 
  
  

 
 
 
 
  
  void ChangeSize(GLsizei w,GLsizei h){

 
 
 
     
  
  if(w<
  
  1) w=
  
  1;

 
 
 
     
  
  if(h<
  
  1) h=
  
  1;

 
 
 
     
  
  printf(
  
  "%d %d\n",w,h);

 
 
 
 
  
      glViewport(
  
  0,
  
  0,w,h);

 
 
 
 
  
      glMatrixMode(GL_PROJECTION);

 
 
 
 
  
      glLoadIdentity();

 
 
 
     
  
  if(w<=h)

 
 
 
 
  
          glOrtho(
  
  -30.0,
  
  30.0,
  
  -30.0*(GLfloat)h/(GLfloat)w,
  
  30.0*(GLfloat)h/(GLfloat)w,
  
  -50.0,
  
  50.0);

 
 
 
     
  
  else

 
 
 
 
  
          glOrtho(
  
  -30.0*(GLfloat)w/(GLfloat)h,
  
  30.0*(GLfloat)w/(GLfloat)h,
  
  -30.0,
  
  30.0,
  
  -50.0,
  
  50.0);

 
 
 
 
  
      glMatrixMode(GL_MODELVIEW);

 
 
 
 
  
      glLoadIdentity();

 
 
 
 
  
  

 
 
 
 
  
  }

 
 
 
 
  
  void DrawMyObjects() {

 
 
 
     
  
  //画四边形

 
 
 
 
  
      glBegin(GL_QUADS);

 
 
 
 
  
      glColor3f(
  
  0.7,
  
  0.5,
  
  0.2);

 
 
 
 
  
      glVertex2f(
  
  -7,
  
  -3);

 
 
 
 
  
      glVertex2f(
  
  -5.5,
  
  -1);

 
 
 
 
  
      glVertex2f(
  
  -1,
  
  -0.5);

 
 
 
 
  
      glVertex2f(
  
  -1,
  
  -4);

 
 
 
 
  
      glColor3f(
  
  0.5,
  
  0.7,
  
  0.2);

 
 
 
 
  
      glVertex2f(
  
  2,
  
  -6.25);

 
 
 
 
  
      glVertex2f(
  
  2.5,
  
  -1);

 
 
 
 
  
      glVertex2f(
  
  6.5,
  
  1);

 
 
 
 
  
      glVertex2f(
  
  4.5,
  
  -6.25);

 
 
 
 
  
      glEnd();

 
 
 
 
  
  }

 
 
 
 
  
  void RenderScene()

 
 
 
 
  
  {

 
 
 
 
  
      glClear(GL_COLOR_BUFFER_BIT);

 
 
 
 
  
      glColor3f(
  
  1.0,
  
  1.0,
  
  0.0);

 
 
 
 
  
      DrawMyObjects();

 
 
 
 
  
      glFlush();

 
 
 
 
  
  }

 
 
 
 
  
  int main(int argc, char *argv[]){

 
 
 
 
  
      glutInit(&argc, argv);

 
 
 
 
  
      glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);

 
 
 
 
  
      glutInitWindowSize(
  
  600,
  
  600);

 
 
 
 
  
  

 
 
 
 
  
      glutCreateWindow(
  
  "My first");

 
 
 
 
  
  

 
 
 
 
  
      glClearColor(
  
  0.51,
  
  0.51,
  
  0.51,
  
  0.5);

 
 
 
 
  
  

 
 
 
 
  
      glutReshapeFunc(ChangeSize);

 
 
 
 
  
      glutDisplayFunc(RenderScene);

 
 
 
 
  
  

 
 
 
 
  
      glutMainLoop();

 
 
 
     
  
  return 
  
  0;

 
 
 
 
  
  }

 
 
  • 运行,无问题,配置成功

2.使用mail模拟器(opengles)

该方法使用的方式基本与上文中使用VS配置opengles思路类似:

  • 工具准备
    • minGW,C++的编译环境
    • mail模拟器(需要其中的libEGL.liblibGLESv2.lib这两个lib文件,用来提供EGL和opengles功能)
    • 《opengles3编程指南》中的源码
  • 环境配置
    • 将mail压缩包下include文件夹下所有文件夹拷贝到minGW/include目录下
    • 将mail压缩包下libEGL.liblibGLESv2.lib拷贝到minGW/lib目录下
    • 将mail压缩包下libEGL.dlllibGLESv2.dll拷贝到minGW/bin目录下
  • 使用CLion打开源码工程
    • 需要注意的是,修改根目录下的CMakeList文件中的正确的opengles版本信息,否则无法运行
    • 运行成功:
  • 使用这种方式配置环境,如果想要将Common作为外部库进行使用,可以直接使用VS配置方法中生成的Common.lib文件,如果不想使用CMake和VS工具生成,还可以使用CLion运行一次源码后,在工程cmake-build-debug/Common中找到libCommon.a文件
    • 将上一步的Common.liblibCommon.a文件拷贝至minGW/lib文件夹下
    • 运行程序,完美大吉
  • 另外想要使用CLion进行C/C++开发,需要熟悉CMake规则

参考链接:
https://blog.csdn/AvatarForTest/article/details/79199807
https://blog.csdn/dcrmg/article/details/53049070
https://blog.csdn/dardgen2015/article/details/51563914

本文标签: 环境Windows