前言

本文主要介绍如何在QNX 系统上使用egl和opengles 控制GPU渲染一个三角形并显示到屏幕上,是一个最基础的screen + egl + opengles 使用实例
软件环境:
qnx7.1
opengles2.0
egl1.4


一、qnx 上的窗口系统——screen

linux 上有wayland/weston 窗口系统,而 screen 就是 qnx 上的窗口系统,qnx screen 相关的介绍可以查看 screen 官方文档, 而在screen 上如何使用opengles 来渲染,则可以查看 screen opengles rending API
主要的几个步骤如下图所示:
qnx 上screen + egl + opengles 最简实例-LMLPHP
显示框架如下图所示:
qnx 上screen + egl + opengles 最简实例-LMLPHP

二、screen + egl + opengles 最简实例

1.使用 addvariant 命令创建工程目录

执行 addvariant -i OS nto aarch64 o.le 命令生成工程目录和相关文件,如下图所示
qnx 上screen + egl + opengles 最简实例-LMLPHP

2. 添加源码文件

在工程根目录下添加 opengles_screen.copengles_screen.use 文件后,工程目录结构如下图所示
qnx 上screen + egl + opengles 最简实例-LMLPHP
其中 opengles_screen.c (源码文件)内容如下

#include <stdio.h>
#include <screen/screen.h>
#include <EGL/egl.h>
#include <GLES2/gl2.h>

// 顶点着色器
const char* vertexShaderSource =
    "attribute vec4 position;\n"
    "void main() {\n"
    "   gl_Position = position;\n"
    "}\n";

// 片段着色器
const char* fragmentShaderSource =
    "void main() {\n"
    "   gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\n"
    "}\n";

int main()
{
   
    // Create a Screen context
	screen_context_t screen_ctx;
	screen_create_context(&screen_ctx, SCREEN_APPLICATION_CONTEXT);

	//Create a render target
	screen_window_t screen_win;
	screen_create_window(&screen_win, screen_ctx);
	
	int usage, format;
	int interval = 1
01-19 11:05