自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(116)
  • 收藏
  • 关注

原创 [Godot] 3D拾取

CollisionObject3D有个信号_input_event,可以用于处理3D拾取。Camera3D也有project_position用于将屏幕空间坐标投影到3D空间。

2024-03-30 10:22:16 1078

原创 [C++] 实现Union

前几天学了replacement new写的小玩意。

2024-03-17 12:07:06 432

原创 基于Godot的康威的生命游戏

创建了一个定时器,每隔0.1秒调用一次_on_timer_timeout(),所以更新代码也在这。在_ready()函数中创建了一个“滑翔机”,坐标系以左上角为原点。

2023-07-16 19:33:05 1532

原创 [C++] 带模板的模板特化

也许是因为模板函数不支持偏特化。因为类模板支持偏特化。

2023-05-02 08:33:00 146 1

原创 [C++] 信号

信号与槽是QT的一个概念,原版C++里并没有。

2023-03-11 15:47:48 825 1

原创 [C++] 简单序列化

序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。

2023-03-11 15:32:26 645

原创 [C++] 简单的侵入式反射实现

有点小问题,但是实现起来巨简单,只要C++17就行。

2023-03-11 15:12:12 361

原创 [C++] 类成员访问

调用非静态类成员需要指明是哪个对象调用的,所以需要传入类对象。

2023-02-25 15:31:27 309

原创 [C++] 简单的节点类

节点的实现

2022-11-12 19:37:16 952

原创 [C++] [OpenGL] 阴影映射

把原来的映射到一章纹理图上,比较深度,深度大的在下面,被阴影覆盖。

2022-09-10 18:36:18 635

原创 [C++] [OpenGL] 体积

额,感觉还行吧。

2022-09-10 11:46:13 670

原创 [C++] 自制编程语言(1):管理变量内存空间(申请任意大小内存并释放)

模板类Pointer需要一个内存的大小,然后申请连续的内存(char是1字节),最后由于指明了类型,所以会完美释放。get()接受一个偏移量,从起始位置开始偏移,之后强制类型转换为int,或者其他,最后赋值。一开始打算用void*,但是运行一看,void*没有指明要释放的内存大小,所以没办法。于是就用了数组,其实直接用char就行。这个设计是为之后的类申请内存所设计的。不够完美,但大体思路就这样。

2022-09-01 20:29:44 584

原创 [SFML] 多个OpenGL上下文

管理两个OpenGL上下文

2022-08-24 16:13:10 693

原创 [C++] [OpenGL] 对OpenGL进行debug

今天才知道有这么好用的debug函数…

2022-07-24 16:12:47 722 1

原创 [C++] [OpenGL] 用FreeType渲染文字

OpenGL并不自带文本渲染,需要自己去得到文本的位图然后渲染出来。以前用的是位图字体,分辨率有限,放大会有锯齿。现在有了更好的替代方案矢量图,相比于位图,矢量图用数学定义(赞美数学),就不会有锯齿了。差不多就是这样。FreeType官网(p.s.字体是我直接从C\Windows\Fonts里拷贝过来的)(p.s.全局变量听起来确实是一个糟糕的设计,所以没用。详见参考的第二个链接。)...

2022-07-23 15:45:50 1567

原创 [C++] [Raylib] 着色器

raylib貌似不自带光照,还要自己写。上写的,编译时raylib会自动加载。先来一打非常简单的着色器。

2022-07-20 12:42:08 454

原创 [C++] [Raylib] raylib的使用

raylib是一个简单易用的库,用于欣赏视频游戏编程。raylib受到BorlandBGI图形库和XNA框架的高度启发。是否要查看raylib中可用的所有函数?检查raylib备忘单。

2022-07-19 19:46:36 2637

原创 [汇编] 基于栈的嵌套循环

用栈实现的嵌套循环加法

2022-06-06 18:41:25 117

原创 [汇编] 简单的乘法

额,用的编译器是emu8086

2022-06-05 12:09:02 293

原创 [Basic] [FreeBASIC] 基础

今天闲着没事,研究研究BASICFreeBASIC——官方文档我用的是FreeBASIC,其他版本可能会略有不同,以下的Basic全部代指FreeBASIC本文默认读者知晓变量、函数、数据类型的概念Basic声明变量应该是dim比较常用吧一般就是这么声明的,和其他语言一样,可以直接初始化,比如数据类型Basic有很多数据类型,下面列举一些Single、Integer、StringBasic的输出是print,自动换行,和Python很像可以一次输出多个值,用逗号分隔函数函数声明有两种:sub

2022-06-02 16:49:05 491

原创 [Java] [Android] 控件动画

ObjectAnimator和Animation的简单使用

2022-06-02 16:15:15 145

原创 [Java] [Android] 使用列表框

ListView,GridView,Spinner适配器列表框需要适配器,常用的有BaseAdapter,SimpleAdapter和ArrayAdapterArrayAdapterArrayAdapter非常简单,只有几个参数:上下文,布局资源和数据数组new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);SimpleAdapterSimpleAdapter也很简单:上下文,数据数组,布局

2022-05-31 09:08:48 269

原创 [Java] [Android] 用Canvas画出3D矩形

额想模仿OpenGL提示虽说是模仿,但不彻底,因为不是每个像素渲染过去的,所以光照、纹理通通不能用然后它的旋转貌似有点问题,不知道为什么代码package com.Diamond.canvas;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.content.Context;import android.graphics.Canvas;import android.grap

2022-05-24 16:57:39 564

原创 [Java] [SurfaceView] 使用EGL

EGLEGL™ 是 Khronos 渲染 API(如 OpenGL ES 或 OpenVG)与底层原生平台窗口系统之间的接口。它处理图形上下文管理、表面/缓冲区绑定和渲染同步,并使用其他 Khronos API 实现高性能、加速、混合模式的 2D 和 3D 渲染。EGL 还提供 Khronos 之间的互操作功能,以实现 API 之间的数据高效传输——例如在运行 OpenMAX AL 的视频子系统和运行 OpenGL ES 的 GPU 之间。EGL 提供了创建渲染表面的机制,客户端 API(如 Op

2022-05-21 09:49:48 287

原创 [C++] 线段碰撞

额今天一时兴起,打算写个2D的布料模拟。思索了一番布料节点碰撞,发现可能会发生线段穿模。然后就写了这个。原理其实很简单求出线段的函数解析式struct LinearFunction{ float k; float b;};LinearFunction calcFunction(){ LinearFunction lf; lf.k = (vertex0.y - vertex1.y) / (vertex0.x - vertex1.x); lf.b = vertex0.y - v

2022-05-15 10:21:15 202

原创 [C++] windows.h实现文件读写

额话说C/C++的文件读写本来就是基于平台的API的吧代码#include <iostream>#include <windows.h>struct _File{ LPCSTR filename; HANDLE handle = nullptr;};typedef _File* File;File open(LPCSTR filename,bool read_mode);LPSTR read(File file);void write(File file

2022-05-13 19:47:29 604

原创 [C++] intptr_t

额看到windows的消息处理函数,使用的WPARAM和LPARAM竟然是整数,觉得十分惊讶(因为lParam可以转化为HWND和CREATESTRUCT)typedef UINT_PTR WPARAM;typedef LONG_PTR LPARAM;typedef LONG_PTR LRESULT;整数能储存地址吗?还真能intptr_t先来观摩一下在corecrt.h里的定义#ifndef _INTPTR_T_DEFINED#define _INTPTR_T_DEFINED#i

2022-05-13 09:26:20 684

原创 [C++] 图像处理

额打算用FreeType获取字体像素,然后贴在一张图上然后这个就是图像处理工具,只有复制和镜像,但足够了(旋转缩放难倒我了)使用完成后需要手动释放资源(干脆用智能指针它不香吗)代码#ifndef __IMAGE_PROCESSING_HPP__#define __IMAGE_PROCESSING_HPP__#include <string>typedef unsigned int uint;typedef unsigned char uchar;typedef std:

2022-05-12 10:36:51 1658

原创 [C++] [Win32] 生命游戏-02

。。。总是有误差,还是SFML好宛如稀饭的代码#include <iostream>#include <ctime>#include <vector>#include <cmath>#include <windows.h>#include <windowsx.h>typedef unsigned short ushort;//size_t也是一样的typedef unsigned int uint;//常量

2022-05-10 11:14:19 168

原创 [C++] [Win32] 生命游戏-01

说明这只是一个框架,请期待下一篇文章(没错我就是牙膏厂厂长)代码#include <iostream>#include <ctime>#include <vector>#include <windows.h>#include <windowsx.h>typedef unsigned short ushort;typedef unsigned int uint;struct CellData{ ushort width

2022-05-09 16:15:52 514

原创 [C++] [Windows] Windows程序上使用OpenGL

代码#include <iostream>#include <windows.h>#include <GL/gl.h>int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int){ //初始化窗口类 WNDCLASSEX wc; memset(&wc, 0, sizeof(WNDCLASSEX)); wc.cbSize = sizeof(WNDCLASSEX); wc.hbrBa

2022-05-05 14:24:19 1306

原创 [C++] [OpenGL] 帧缓冲2

额这个应该是多重渲染目标(MRT)吧,反正就这么命名了r,g,b,d依次是red,green,blue,depth(其实是距离)除100是因为太亮了,很容易就会达到1,而100是我视体的远平面话说纹理竟然是反的片段着色器代码#version 330 corein vec3 v_position;in vec3 v_normal;in vec3 v_normal2;in vec2 v_texCoord;layout(location = 0)out vec4 o_red;layou

2022-05-02 18:35:08 469

原创 [C++] [OpenGL] 帧缓冲

代码 GLuint fbo; GLuint rbo; GLuint texture; //获取帧缓冲对象 glGenFramebuffers(1, &fbo); glBindFramebuffer(GL_FRAMEBUFFER, fbo); //获取渲染缓冲对象 glGenRenderbuffers(1, &rbo); glBindRenderbuffer(GL_RENDERBUFFER, rbo); glRenderbufferStorage(GL_RENDERBUFF

2022-05-02 16:32:20 594

原创 [C++] [OpenGL] GLFW工具类

提示虽然是基于我的代码写的,但是部分还是能用的SimpleGL.hpp这是最重要的头文件,所有代码都包括了它#ifndef __SIMPLEGL_MAIN_HPP__#define __SIMPLEGL_MAIN_HPP__#if defined(USE_GLEW)#include <GL/glew.h>#else#include <glad/glad.c>#endifnamespace SimpleGL{ bool initGL() { #if

2022-05-02 13:25:17 1069

原创 [C++] [OpenGL] 生成模型

代码#ifndef __SIMPLEGL_MODEL_MODELBUILDER_HPP__#define __SIMPLEGL_MODEL_MODELBUILDER_HPP__#include <glm/glm.hpp>#include <vector>#include <iostream>#include "Model.hpp"namespace SimpleGL{ class ModelBuilder { public: static

2022-05-01 20:07:41 307

原创 [C++] [OpenGL] 加载obj文件

前言额,以前确实写过Java的加载obj文件,但那是Java,所以用C++再写一次加载obj:1.0,2.0片段着色器代码#version 330 corein vec3 v_position;in vec3 v_color;in vec3 v_normal;in vec3 v_normal2;in vec2 v_texCoord;out vec4 o_color;uniform bool u_enableLighting;uniform bool u_enableDouble

2022-04-30 17:00:01 1484 1

原创 [C++] [OpenGL] 基于FreeGLUT固定渲染管线OpenGL的简单示例

代码#include <GL/freeglut.h>#include <iostream>#include <vector>#include <ctime>std::vector<int> subWindows;clock_t last;void display();void idle();void lighting();void keyboard(unsigned char key, int x, int y);int

2022-04-28 18:17:24 705

原创 [C++] [OpenGL] FreeGLUT+GLAD的简单示例

前言最近突然打算写OpenGL1.0,于是打开GLFW,配置上下文,创建失败…看来GLFW只支持现代OpenGL于是我又转向FreeGLUT,打开示例,发现FreeGLUT原来是支持现代OpenGL的OpenGL3.1官方示例FreeGLUT代码#include "glad.c"#include <GL/freeglut.h>#include <iostream>const char* vSource = "#version 330 core\nlayout(l

2022-04-28 08:47:17 890

原创 [C++] [OpenGL] 基于GLFW+GLAD的OpenGL简单程序

代码test.cpp#include "SimpleGL/glad.c"#include <GLFW/glfw3.h>#include <iostream>#include "SimpleGL/Program.hpp"#include "SimpleGL/Camera.hpp"#include "SimpleGL/Buffer.hpp"#include "SimpleGL/Error.hpp"#include "SimpleGL/Sprite.hpp"usin

2022-04-25 13:12:22 1118

原创 [C++] [SFML] 基于Win32的SFML程序

前言看了下SFML的官方示例,发现SFML竟然还能这么玩explicit RenderWindow(WindowHandle handle, const ContextSettings& settings = ContextSettings());对,这个也是sf::RenderWindow的构造函数typedef HWND__* WindowHandle;由此可以看出,SFML可以把一个HWND当窗口使(在官方示例里也确实把Static控件当sf::RenderWindow来用了)

2022-04-23 16:09:58 1009

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除