[OpenGL] 期末大作业开源 全套项目+PPT+报告 基于OpenGL 3.3 CORE 环境集成可以直接运行

本学期的OpenGL大作业做了一个3D二维码生成器:

[OpenGL] 期末大作业开源 全套项目+PPT+报告 基于OpenGL 3.3 CORE 环境集成可以直接运行_第1张图片

可以切换相机视角&更多功能等你添加。

[OpenGL] 期末大作业开源 全套项目+PPT+报告 基于OpenGL 3.3 CORE 环境集成可以直接运行_第2张图片

可以动态更新纹理: 

[OpenGL] 期末大作业开源 全套项目+PPT+报告 基于OpenGL 3.3 CORE 环境集成可以直接运行_第3张图片

在数据的准备阶段,需要提取二维码关键点的信息,写了一个python脚本用来生成对应的二维数组:

import qrcode
import numpy as np

data = "http://idiospace.com"
qr = qrcode.QRCode(
    version=1,			#version二维码的格子矩阵大小,可以是1到40
    error_correction=qrcode.constants.ERROR_CORRECT_L,	#error_correction二维码错误容许率,默认ERROR_CORRECT_M,容许小于15%的错误率
    box_size=1,	#box_size二维码每个小格子包含的像素数量
    border=0,	#border二维码到图片边框的小格子数,默认值为4
)

qr.add_data(data=data)
img = qr.make_image(fill_color="black", back_color="white")
img.show()  # 以BMP的格式输出图片

img_arr = np.array(img)

print(img_arr.shape)
[rows, cols] = img_arr.shape
for i in range(rows):
    for j in range(cols):
        if img_arr[j, i]:
            print("1", end="")
        else:
            print("0", end="")
        print(", ", end="")
    print("")


可以生成得到二维数组:

0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 
0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 
0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 
0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 
0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 
0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 
0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 
1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 
1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 
1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 
1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 
0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 
0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 
0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 
0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 
0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1, 
0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 
0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 
0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 
0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0

输出得到需要硬编码到C++ OpenGL程序中去(这里可以改进!),然后点击Generate就可以生成:(Raw Message)

[OpenGL] 期末大作业开源 全套项目+PPT+报告 基于OpenGL 3.3 CORE 环境集成可以直接运行_第4张图片

就写了一周,时间有限,Demo粗糙,如果对你有帮助,可以点赞 / 评论 / Star,或者素质三连。 

 

开源地址:Github

你可能感兴趣的:(opengl,计算机图形学)