问题描述

我想在我的Ubuntu计算机上开发OpenGL ES 2.0应用程序。我找不到支持GLES 2.0的任何库/仿真器。有什么建议么?

最佳回答

您可以使用POWERVR SDK在PC上模拟Opengl。您可以下载SDK here。该归档文件提供了将仿真库作为文档文件安装的必要步骤,并包括带有源代码的教程和演示应用程序。

次佳回答

GLFW,Mesa,Ubuntu 16.04 AMD64

在Ubuntu 14.04上设置起来并不容易,但是现在可以使用了。

sudo apt-get install libglfw3-dev libgles2-mesa-dev

gcc glfw_triangle.c -lGLESv2 -lglfw

输出:

资源:

#include

#include

#define GLFW_INCLUDE_ES2

#include

static const GLuint WIDTH = 800;

static const GLuint HEIGHT = 600;

static const GLchar* vertex_shader_source =

"#version 100\n"

"attribute vec3 position;\n"

"void main() {\n"

" gl_Position = vec4(position, 1.0);\n"

"}\n";

static const GLchar* fragment_shader_source =

"#version 100\n"

"void main() {\n"

" gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n"

"}\n";

static const GLfloat vertices[] = {

0.0f, 0.5f, 0.0f,

0.5f, -0.5f, 0.0f,

-0.5f, -0.5f, 0.0f,

};

GLint common_get_shader_program(const char *vertex_shader_source, const char *fragment_shader_source) {

enum Consts {INFOLOG_LEN = 512};

GLchar infoLog[INFOLOG_LEN];

GLint fragment_shader;

GLint shader_program;

GLint success;

GLint vertex_shader;

/* Vertex shader */

vertex_shader = glCreateShader(GL_VERTEX_SHADER);

glShaderSource(vertex_shader, 1, &vertex_shader_source, NULL);

glCompileShader(vertex_shader);

glGetShaderiv(vertex_shader, GL_COMPILE_STATUS, &success);

if (!success) {

glGetShaderInfoLog(vertex_shader, INFOLOG_LEN, NULL, infoLog);

printf("ERROR::SHADER::VERTEX::COMPILATION_FAILED\n%s\n", infoLog);

}

/* Fragment shader */

fragment_shader = glCreateShader(GL_FRAGMENT_SHADER);

glShaderSource(fragment_shader, 1, &fragment_shader_source, NULL);

glCompileShader(fragment_shader);

glGetShaderiv(fragment_shader, GL_COMPILE_STATUS, &success);

if (!success) {

glGetShaderInfoLog(fragment_shader, INFOLOG_LEN, NULL, infoLog);

printf("ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n%s\n", infoLog);

}

/* Link shaders */

shader_program = glCreateProgram();

glAttachShader(shader_program, vertex_shader);

glAttachShader(shader_program, fragment_shader);

glLinkProgram(shader_program);

glGetProgramiv(shader_program, GL_LINK_STATUS, &success);

if (!success) {

glGetProgramInfoLog(shader_program, INFOLOG_LEN, NULL, infoLog);

printf("ERROR::SHADER::PROGRAM::LINKING_FAILED\n%s\n", infoLog);

}

glDeleteShader(vertex_shader);

glDeleteShader(fragment_shader);

return shader_program;

}

int main(void) {

GLuint shader_program, vbo;

GLint pos;

GLFWwindow* window;

glfwInit();

glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);

glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);

window = glfwCreateWindow(WIDTH, HEIGHT, __FILE__, NULL, NULL);

glfwMakeContextCurrent(window);

printf("GL_VERSION : %s\n", glGetString(GL_VERSION) );

printf("GL_RENDERER : %s\n", glGetString(GL_RENDERER) );

shader_program = common_get_shader_program(vertex_shader_source, fragment_shader_source);

pos = glGetAttribLocation(shader_program, "position");

glClearColor(0.0f, 0.0f, 0.0f, 1.0f);

glViewport(0, 0, WIDTH, HEIGHT);

glGenBuffers(1, &vbo);

glBindBuffer(GL_ARRAY_BUFFER, vbo);

glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);

glVertexAttribPointer(pos, 3, GL_FLOAT, GL_FALSE, 0, (GLvoid*)0);

glEnableVertexAttribArray(pos);

glBindBuffer(GL_ARRAY_BUFFER, 0);

while (!glfwWindowShouldClose(window)) {

glfwPollEvents();

glClear(GL_COLOR_BUFFER_BIT);

glUseProgram(shader_program);

glDrawArrays(GL_TRIANGLES, 0, 3);

glfwSwapBuffers(window);

}

glDeleteBuffers(1, &vbo);

glfwTerminate();

return EXIT_SUCCESS;

}

代码的关键行是:

#define GLFW_INCLUDE_ES2

#include

#elif defined(GLFW_INCLUDE_ES2)

#include

#if defined(GLFW_INCLUDE_GLEXT)

#include

#endif

该源代码似乎是用GLES和OpenGL的通用子集编写的(就像许多GLES一样),并且如果我们删除#define GLFW_INCLUDE_ES2,也可以使用-lGL进行编译。

如果我们添加不在GLES中的内容(例如立即渲染glBegin),则链接会按预期失败。

鸣谢:genpfult使代码更正确。

ARM Mali OpenGL ES SDK

包含几个有趣的开源示例+窗口系统样板(X11 + EGL)。

该构建系统支持针对ARM /Mali SoC的轻松交叉编译,但是我尚未对此进行测试。

其中包括的关键组件似乎是“ OpenGL ES仿真器” http://malideveloper.arm.com/resources/tools/opengl-es-emulator/,它“将OpenGL ES 3.2 API调用映射到OpenGL API”。但这并不附带源代码,而只是预编译的。

使用似乎允许的自定义企业EULA,是的,请咨询您的律师。

已在SDK v2.4.4上测试。

第三种回答

台面supports it。如果只想限制自己使用OpenGL ES,则需要将其构建到一个单独的目录中,然后添加适当的包含目录和库目录。

参考资料

linux opengl es,在Linux上,如何开发OpenGL ES(GLES)2.0应用程序?相关推荐

  1. linux征途服务端,踏上Spring的征程3-Linux服务器从0开始搭建

    一.服务器选型与基本配置 京东云服务器现在有一个月的试用期限,所以我选择了这个试用服务器,其配置如下: 图片.png 系统版本我选择是最新centerOS的7.0版本 图片.png 重置密码,之后重启 ...

  2. Linux 2 的 Windows 子系统上发布 CUDA

    Linux 2 的 Windows 子系统上发布 CUDA 为响应大众需求,微软 宣布 在 2020 年 5 月的 建造 大会上推出了 建造 ( WSL 2 ) – GPU 加速功能.这一特性为许多计 ...

  3. 适用于Linux 2的Windows子系统上的CUDA

    适用于Linux 2的Windows子系统上的CUDA Announcing CUDA on Windows Subsystem for Linux 2 为了响应大众的需求,微软在2020年5月的构建 ...

  4. Linux上线程开发API概要(线程)

    进程与线程       典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情.有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理 ...

  5. linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程

    LINUX下QT For ARM开发环境搭建过程是本文介绍的内容,不多说,先来看内容.在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括 ...

  6. 在linux基础上开发内核,科学院在Linux内核基础上,开发出中文操作系统是()。A.中科LinuxB.熊猫LinuxC.红旗Linux...

    科学院在Linux内核基础上,开发出中文操作系统是().A.中科LinuxB.熊猫LinuxC.红旗Linux 更多相关问题 肉芽组织在光镜下主要由什么成份构成?A.炎症细胞及成纤维细胞B.成纤维细胞 ...

  7. win集成linux开发环境,在 Windows 10 上创建开发环境 | Microsoft Docs

    在 Windows 10 上设置开发环境Set up your development environment on Windows 10 07/24/2020 本文内容 本指南将帮助你开始安装和设置 ...

  8. linux上qt配置opengl,Ubuntu下配置Qt+OpenGL+OpenCV

    我的平台:Ubuntu 10.04+Qt+OpenGL+OpenCV OpenGL是Qt自带的,Windows下的版本OpenGL库已经随同Qt的Windows发行版一同安装,Linux版本则没有安装 ...

  9. 多台es服务器搭建elasticsearch集群,es单机伪集群搭建,在一台服务器上以三个不同的端口模拟三台主机完成es伪集群搭建,windows和Linux操作方法一致

    目录 (一)es单机伪集群搭建 一.准备三台elasticsearch服务器(复制三个es目录) 二.修改每台服务器的配置 1.修改es配置文件 2.配置注意 (二)多台服务器es集群搭建: 1 安装 ...

最新文章

  1. 利用浏览器LocalStorage缓存图片,视频文件
  2. CSS的未来:游戏的变革Flexbox
  3. python背景颜色词云图_python中实现词云图
  4. asp.net怎样解决高并发问题
  5. linux树莓派网易云音乐,基于树莓派的红外遥控版网易云音乐播放器
  6. Resin的安全性ip限制
  7. mysql decode语句_MySQL复制问题的分析
  8. VVOL和VASA Provider
  9. python创意实用案例-精心整理!9个 Python 实用案例分享
  10. 微信公众号网页授权代码优化过程(三)
  11. Oracle中ORACLE_SID,INSTANCE_NAME,DB_NAME几个名词的区别
  12. 数据库系统概论第五版第二章答案王珊
  13. 周莫凡python_机器学习 | 莫烦Python
  14. opencv遍历像素输出像素值
  15. java rxtx 64_win7 64为下使用rxtx串口通信
  16. 可喜可贺,暴雪即将收购第一家工作室Proletariat,魔法吃鸡停运
  17. jasper 引入字体_MAC下JasperStudio创建及引用字体
  18. CKEditor5 富文本编辑器安装以及使用
  19. 计算机美图PS等,电脑软件ps和美图秀秀怎么拼图 不懂操作怎么办?
  20. 瀑布 敏捷转换_敏捷的错觉(大多数敏捷转换最终实现了什么)

热门文章

  1. flash调用swf文件服务器,FLASH如何加载(调用)外部SWF文件
  2. 关于latex报错GPL Ghostscript 9.50的解决办法
  3. 【BZOJ4808/3175】马/[Tjoi2013]攻击装置 最小割
  4. 微信小程序-购物商城
  5. Ubuntu配置Nginx部署Vue SPA项目
  6. 滑动窗口大小为什么不能是2的n次方大小
  7. 网络ID,广播地址,掩码位数计算
  8. P1909 [NOIP2016 普及组] 买铅笔
  9. jrebel Could not find agent library/Can't load IA 32-bit .dll on a AMD 64-bit platform
  10. 【已解决】彻底修改Tomcat9 控制台 中文乱码问题