OpenGLES3.0绘制三角形示例项目源码解析

需积分: 8 1 下载量 48 浏览量 更新于2025-01-01 收藏 31.09MB RAR 举报
资源摘要信息:"本资源是关于使用OpenGL ES 3.0进行图形编程的一个基础入门级示例项目。OpenGL ES(Open Graphics Library for Embedded Systems)是嵌入式系统领域的图形应用程序编程接口,它是OpenGL的子集,专门为移动设备和嵌入式设备设计。OpenGL ES 3.0是该API的第三个主要版本,它提供了高级的图形功能,并支持现代图形硬件。 在这个示例项目中,我们将会看到如何利用OpenGL ES 3.0的编程接口,在Windows环境下使用Visual Studio 2017开发工具和Mali OpenGL ES Emulator模拟器来绘制一个简单的三角形。项目的源代码中包含了必要的顶点着色器(Vertex Shader)和片元着色器(Fragment Shader)。 顶点着色器是一个运行在GPU上的小程序,负责处理顶点数据,如位置和颜色,并将它们传递到图形管线的下一个阶段。在本示例中,顶点着色器的任务是定义三角形的顶点位置,以及如何将这些顶点传递给后续的处理流程。 片元着色器则是用于计算最终颜色值的小程序。它接收来自顶点着色器的数据,并根据这些数据以及其它一些输入计算出屏幕上每个像素的颜色值。在这个示例中,片元着色器的任务是为三角形的每个片元分配一个颜色值,使得三角形在屏幕上呈现出来。 开发环境要求为Windows 10操作系统,以及Visual Studio 2017开发环境。为了在没有实际硬件的情况下运行OpenGL ES 3.0程序,开发者需要一个OpenGL ES的模拟器,如项目中提到的Mali OpenGL ES Emulator。该模拟器能够模拟OpenGL ES的运行环境,使得开发者可以在Windows平台上测试和调试其OpenGL ES应用。 文件名称列表中包含的'2-1Hello_Triangle_empty_project'可能是一个空项目文件夹或者是一个包含必要构建文件、配置文件和示例代码的空模板,供开发者在此基础上进行学习和开发。 通过这个示例项目,开发者可以获得关于OpenGL ES 3.0编程的初步经验,理解在嵌入式平台上使用OpenGL ES进行图形渲染的基本概念,并且学习如何设置和配置开发环境。对于想要进入移动图形编程领域的开发者来说,这是一个非常好的起点。" 本资源不仅包含了一个基础的图形渲染示例代码,还提供了环境搭建和工具配置的详细信息,以及对OpenGL ES 3.0编程模型的介绍,使得开发者能够快速上手并开始自己的图形编程项目。

def SegMentLWelder(mask_k, mask_box, img_show, contours_info, box, k_class): imgL = cv2.copyTo(mask_k, mask_box) contours_mask_k, _ = cv2.findContours( imgL, cv2.RETR_LIST, cv2.CHAIN_APPROX_NONE) (x, y), radius = cv2.minEnclosingCircle(contours_mask_k[0]) center = [int(x), int(y)] area, trg1 = cv2.minEnclosingTriangle(contours_mask_k[0]) triange_P1 = trg1[0][0] triange_P2 = trg1[1][0] triange_P3 = trg1[2][0] areaL = len(np.where(imgL == 255)[0]) triangle_cnt1 = np.array([triange_P1, center, triange_P2]) mask_triange = np.zeros_like(imgL) mask_triange = cv2.drawContours( mask_triange, [triangle_cnt1.astype(int)], 0, 255, -1) img_triange1 = cv2.copyTo(imgL, mask_triange) triangle_cnt2 = np.array([triange_P2, center, triange_P3]) mask_triange = np.zeros_like(imgL) mask_triange = cv2.drawContours( mask_triange, [triangle_cnt2.astype(int)], 0, 255, -1) img_triange2 = cv2.copyTo(imgL, mask_triange) area1 = len(np.where(img_triange1 == 255)[0]) if area1 < 0.25*areaL or area1 > 0.75*areaL: triangle_cnt1 = np.array([triange_P1, center, triange_P3]) mask_triange = np.zeros_like(imgL) mask_triange = cv2.drawContours( mask_triange, [triangle_cnt1.astype(int)], 0, 255, -1) img_triange1 = cv2.copyTo(imgL, mask_triange) else: area2 = len(np.where(img_triange2 == 255)[0]) if area2 < 0.25*areaL or area2 > 0.75*areaL: triangle_cnt2 = np.array([triange_P1, center, triange_P3]) mask_triange = np.zeros_like(imgL) mask_triange = cv2.drawContours( mask_triange, [triangle_cnt2.astype(int)], 0, 255, -1) img_triange2 = cv2.copyTo(imgL, mask_triange) FindContourSinge(k_class, img_triange1, contours_info, img_show, times=1) FindContourSinge(k_class, img_triange2, contours_info, img_show, times=1)

2023-06-12 上传