本帖最后由 qinyunti 于 2023-3-7 00:03 编辑
0e9518fe3a19e2afeac78cc5025b51bd
前言
前面我们移植了ZLGGUI,有了gui框架及就可以方便进行各种交互界面开发了。这一篇我们继续玩点高级的,使用oled进行3D显示。
过程
添加如下代码
添加头文件包含路径
需要实现Mycommon下的如下接口
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <malloc.h>
//#include <dma.h>
//#include <framebuffer.h>
#include <stdint.h>
#include <common.h>
#include "config.h"
uint8_t oled_draw(void);
uint8_t oled_get_pixel(uint8_t x,uint8_t y);
void oled_set_pixel(uint8_t x,uint8_t y,uint8_t color);
uint8_t oled_fill(uint8_t color);
void Screen_Init(void){
}
void Set_Point(int x,int y,uint32_t color){
oled_set_pixel(x,uy,color);
}
void Fill_Screen(uint32_t color){
oled_fill(color);
}
uint32_t Get_Point(int x ,int y){
return oled_get_pixel(x,y);
}
void Show_Screen(void){
oled_draw();
}
void Screen_Setbl(void){
}
测试
调用3D_Rotateapplication.c中的接口
旋转
#include <stdio.h>
#include "nuclei_sdk_hal.h"
#include "./inc/oled_display.h"
#include <Mymath.h>
#include <config.h>
#include <front.h>
#include <Display_3D.h>
int main(void)
{
//printf("Hello World\r\n");
anlogic_log_display();
while(1)
{
for(int k=0;k<360;k+=60)
{
GUI_FillSCR(back_color);
RateCube(45,45,k,1,32,15);
Show_Screen();
delay_1ms(200);
}
}
return 0;
}
62aa572170c5363b6ae973dece8b05db
总结
以上进行了3D显示的测试,3D显示需要做大量的矩阵运算,这也需要MCU本身具备比较强的计算性能,从测试来看计算还是比较快的,刷新比较流畅。
完整工程见附件。