- 博客(117)
- 收藏
- 关注
原创 [Godot] 3D拾取
CollisionObject3D有个信号_input_event,可以用于处理3D拾取。Camera3D也有project_position用于将屏幕空间坐标投影到3D空间。
2024-03-30 10:22:16
1260
原创 基于Godot的康威的生命游戏
创建了一个定时器,每隔0.1秒调用一次_on_timer_timeout(),所以更新代码也在这。在_ready()函数中创建了一个“滑翔机”,坐标系以左上角为原点。
2023-07-16 19:33:05
1662
原创 [C++] 简单序列化
序列化(Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
2023-03-11 15:32:26
716
原创 [C++] 自制编程语言(1):管理变量内存空间(申请任意大小内存并释放)
模板类Pointer需要一个内存的大小,然后申请连续的内存(char是1字节),最后由于指明了类型,所以会完美释放。get()接受一个偏移量,从起始位置开始偏移,之后强制类型转换为int,或者其他,最后赋值。一开始打算用void*,但是运行一看,void*没有指明要释放的内存大小,所以没办法。于是就用了数组,其实直接用char就行。这个设计是为之后的类申请内存所设计的。不够完美,但大体思路就这样。
2022-09-01 20:29:44
681
原创 [C++] [OpenGL] 用FreeType渲染文字
OpenGL并不自带文本渲染,需要自己去得到文本的位图然后渲染出来。以前用的是位图字体,分辨率有限,放大会有锯齿。现在有了更好的替代方案矢量图,相比于位图,矢量图用数学定义(赞美数学),就不会有锯齿了。差不多就是这样。FreeType官网(p.s.字体是我直接从C\Windows\Fonts里拷贝过来的)(p.s.全局变量听起来确实是一个糟糕的设计,所以没用。详见参考的第二个链接。)...
2022-07-23 15:45:50
1927
原创 [C++] [Raylib] raylib的使用
raylib是一个简单易用的库,用于欣赏视频游戏编程。raylib受到BorlandBGI图形库和XNA框架的高度启发。是否要查看raylib中可用的所有函数?检查raylib备忘单。
2022-07-19 19:46:36
4175
原创 [Basic] [FreeBASIC] 基础
今天闲着没事,研究研究BASICFreeBASIC——官方文档我用的是FreeBASIC,其他版本可能会略有不同,以下的Basic全部代指FreeBASIC本文默认读者知晓变量、函数、数据类型的概念Basic声明变量应该是dim比较常用吧一般就是这么声明的,和其他语言一样,可以直接初始化,比如数据类型Basic有很多数据类型,下面列举一些Single、Integer、StringBasic的输出是print,自动换行,和Python很像可以一次输出多个值,用逗号分隔函数函数声明有两种:sub
2022-06-02 16:49:05
806
原创 [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
310
原创 [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
654
原创 [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
387
原创 [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
281
原创 [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
690
原创 [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
774
原创 [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
1720
原创 [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
216
原创 [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
551
原创 [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
1401
原创 [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
529
原创 [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
663
原创 [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
1162
原创 [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
350
原创 [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
1658
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
785
原创 [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
984
原创 [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
1231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人