![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OpenGL/OpenGL ES/EGL
OpenGL,OpenGL ES和EGL
DiamondC++
我很懒,还没有添加简介
展开
-
[C++] [OpenGL] 阴影映射
把原来的映射到一章纹理图上,比较深度,深度大的在下面,被阴影覆盖。原创 2022-09-10 18:36:18 · 642 阅读 · 0 评论 -
[C++] [OpenGL] 体积
额,感觉还行吧。原创 2022-09-10 11:46:13 · 691 阅读 · 0 评论 -
[SFML] 多个OpenGL上下文
管理两个OpenGL上下文原创 2022-08-24 16:13:10 · 710 阅读 · 0 评论 -
[C++] [OpenGL] 对OpenGL进行debug
今天才知道有这么好用的debug函数…原创 2022-07-24 16:12:47 · 740 阅读 · 1 评论 -
[C++] [OpenGL] 用FreeType渲染文字
OpenGL并不自带文本渲染,需要自己去得到文本的位图然后渲染出来。以前用的是位图字体,分辨率有限,放大会有锯齿。现在有了更好的替代方案矢量图,相比于位图,矢量图用数学定义(赞美数学),就不会有锯齿了。差不多就是这样。FreeType官网(p.s.字体是我直接从C\Windows\Fonts里拷贝过来的)(p.s.全局变量听起来确实是一个糟糕的设计,所以没用。详见参考的第二个链接。)...原创 2022-07-23 15:45:50 · 1651 阅读 · 0 评论 -
[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 · 304 阅读 · 0 评论 -
[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 · 1316 阅读 · 0 评论 -
[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 · 476 阅读 · 0 评论 -
[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 · 598 阅读 · 0 评论 -
[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 · 1078 阅读 · 0 评论 -
[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 · 311 阅读 · 0 评论 -
[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 · 1536 阅读 · 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 · 722 阅读 · 0 评论 -
[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 · 900 阅读 · 0 评论 -
[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 · 1136 阅读 · 0 评论 -
[Java] [OpenGL ES 3.2] 任意裁剪平面
isClip()——计算是否需要被裁剪bool isClip(){ vec4 plane1 = vec4(1.0,0.0,0.0,1.0); vec4 plane2 = vec4(1.0,0.0,0.0,-1.0); float dist1 = dot(v_position,vec3(plane1)) + plane1.w; float dist2 = dot(v_position,vec3(plane2)) + plane2.w; retur原创 2022-03-29 12:48:10 · 2179 阅读 · 0 评论 -
[Java] [OpenGL ES 3.2] 非真实感绘制与球,圆柱体,胶囊的生成
着色器代码v.vert#version 320 esprecision highp float;layout(location=0)in vec3 a_position;layout(location=1)in vec4 a_color;layout(location=2)in vec3 a_normal;layout(location=3)in vec3 a_texCoord;out vec4 v_color;out vec3 v_normal;out vec3 v_texCoor原创 2022-03-28 12:59:25 · 2345 阅读 · 0 评论 -
[android] [java] [OpenGL ES3.2] MyMineCraft
代码已经传到github上了Sprite就是改了的MyObjectSprite.javapackage com.Diamond.SGL;import android.renderscript.Float3;import android.renderscript.Matrix4f;public class Sprite { private Float3 mPosition; private Float3 mRotate; private Float3 mScale;原创 2022-02-12 09:14:15 · 199 阅读 · 0 评论 -
[Java] [JBullet] [OpenGL ES3.2] 文本和物理碰撞
提示这里用的是JBullet物理引擎和javax的vecmath,可以从这里下载jbullet或者github上的OpenGLES3xGame刚体RigidObject.javapackage com.Diamond.gl12;import java.io.InputStream;import android.renderscript.Float4;import com.bulletphysics.dynamics.RigidBody;import com.bulletphysics.co原创 2022-01-27 08:57:55 · 294 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] Terrain2.0
代码package com.Diamond.gl10;import java.io.InputStream;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Color;import java.util.ArrayList;import android.renderscript.Float3;import android.opengl.GLES32;im原创 2022-01-25 10:34:42 · 1632 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] 灰度图地形
代码VectorUtil.javapackage com.Diamond.gl10;import android.renderscript.Float3;public class VectorUtil { public static Float3 add(Float3 a, Float3 b) { float x = a.x + b.x; float y = a.y + b.y; float z = a.z + b.z; r原创 2022-01-24 16:30:44 · 1853 阅读 · 1 评论 -
[Java] [OpenGL ES3.2] 天空盒
代码MySurfaceView.javatry { AssetManager am = getResources().getAssets(); skyBox = new SkyBox(am.open("model/cube2.obj")); skyBox.enableTexture = true; Texture[] textures = new Texture[6];原创 2022-01-24 14:11:34 · 2076 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] 一群方块组成的方块
代码MySurfaceView.javapackage com.Diamond.gl09;import android.opengl.*;import android.opengl.GLES32;import android.opengl.GLSurfaceView;import android.content.Context;import javax.microedition.khronos.opengles.GL10;import javax.microedition.khronos.原创 2022-01-23 19:10:01 · 318 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] 环绕相机
代码public Camera setOrbit(float angleX,float angleY,float distance) { float y = (float)Math.sin(Math.toRadians(angleY)) * distance; float h = (float)Math.cos(Math.toRadians(angleY)) * distance; float x = (float)Math.sin(Mat原创 2022-01-23 13:04:16 · 269 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] 多光源(2个)与雾化
着色器usual.vert#version 320 eslayout(location=0)in vec3 a_position;layout(location=1)in vec4 a_color;out vec4 v_color;out vec3 v_position;uniform mat4 u_projection;uniform mat4 u_view;uniform mat4 u_model;void main(){gl_Position = u_projection *原创 2022-01-22 17:29:40 · 634 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] ObjObject2.0
分析在部分建模软件上的面可能不是3个顶点,而是4个顶点的,如果用原来的loadFromStream()就会丢失面提示在导入模型前,需要确认模型的"f"标签所对应的顶点数以选择合适的函数(p.s.loadFromStream2()返回的数据需要增加一个EBO,而且法向量和纹理坐标不能用)代码package com.Diamond.gl07;import java.io.InputStream;import java.util.ArrayList;import java.io.InputSt原创 2022-01-22 11:00:20 · 352 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] Camera2.0
代码Camera.javapackage com.Diamond.gl07;import android.opengl.Matrix;import android.renderscript.Matrix4f;import android.renderscript.Float3;public class Camera { private Float3 mPosition; private Float3 mCenter; private Float3 mUp; private Matri原创 2022-01-22 10:03:44 · 350 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] 混合与几何着色器,法向量可视化
提示OpenGL ES3.2以下没有几何着色器着色器normal.vert#version 320 eslayout(location=0)in vec3 a_position;layout(location=1)in vec3 a_normal;out VS_OUT {vec4 normal;} vs_out;uniform mat4 u_projection;uniform mat4 u_view;uniform mat4 u_model;void main(){gl_P原创 2022-01-21 20:07:42 · 609 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] 导入obj文件
代码Light.javapackage com.Diamond.gl06;import android.renderscript.Float4;import android.opengl.GLES32;import android.renderscript.Float3;public class Light extends MyObject { public float intensity; public Float4 color; public GLES32 gl; publ原创 2022-01-21 12:12:07 · 244 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] BufferUtil2.0
代码package com.Diamond.gl06;import android.opengl.GLES32;import java.nio.Buffer;import java.nio.FloatBuffer;import java.nio.ByteBuffer;import java.nio.ByteOrder;import java.nio.IntBuffer;public class BufferUtil { public static ByteBuffer newNativ原创 2022-01-20 15:14:18 · 457 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] 纹理
Texture.javapackage com.Diamond.gl05;import android.opengl.GLES32;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.opengl.GLUtils;import java.io.InputStream;import java.io.IOException;public class Texture {原创 2022-01-19 12:20:17 · 571 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] BufferUtil VBO和VAO的使用
写了一个BufferUtil类,用来方便VAO、VBO、EBO的使用改进了一下Axis(坐标轴)类作为使用例原创 2022-01-18 10:27:52 · 550 阅读 · 0 评论 -
[Java] [OpenGL ES3.2] 正多边形
代码RegularPolygon.javapackage com.Diamond.gl04;import android.opengl.GLES32;import java.nio.FloatBuffer;import java.util.Random;import android.util.Log;import android.renderscript.Float4;public class RegularPolygon extends MyObject { public int s原创 2022-01-17 11:15:43 · 471 阅读 · 0 评论 -
[Java] [OpenGL ES 3.2] 镜面反射光照
实现原理通过取光线方向相对于法线的反射向量,将其与相机方向相乘(点乘),用pow取幂就行了着色器代码一样的部分就跳过了vec3 cameradir = normalize(u_cameraposition - v_position);vec3 reflectdir = normalize(reflect(-lightcolor,v_normal));float specular = pow(max(dot(cameradir,reflectdir),0.0f),128.0f);最后效果那原创 2022-01-15 14:57:57 · 1110 阅读 · 0 评论 -
[Java] [OpenGL ES 3.2] 光照
着色器v.vert#version 320 eslayout(location=0)in vec3 a_position;layout(location=1)in vec4 a_color;out vec4 v_color;uniform mat4 u_projection;uniform mat4 u_view;uniform mat4 u_model;void main(){gl_Position = u_projection * u_view * u_model * vec4(原创 2022-01-15 14:11:57 · 3561 阅读 · 0 评论 -
[java] [OpenGL ES 3.2] 一群三角形
1000个三角形随机分布在-5至5的空间里的基于Open GL ES 3.2的简单示例原创 2022-01-13 18:09:20 · 740 阅读 · 0 评论 -
[Java] [OpenGL ES 3.x] 程序模板
MainActivity.javapackage com.Diamond.example;import android.app.Activity;import android.os.Bundle;import com.Diamond.example.MySurfaceView;public class MainActivity extends Activity { public MySurfaceView surfaceView; @Override prot原创 2022-01-08 17:02:47 · 959 阅读 · 0 评论 -
[android] [OpenGLES 1.1] (想不出名字)
标题OpenGLES 1.x相比于OpenGLES 2.x和3.x,不用写着色器,方便许多,今天闲着没事,就写几个类不过貌似有点问题,难道是我使用方式不对???这个先留着当模板,寒假写个OpenGLES 3.x的代码Camera.javapackage com.Diamond.gl10try;import android.opengl.*;import android.renderscript.Float3;import android.opengl.Matrix;import and原创 2022-01-02 21:15:59 · 851 阅读 · 0 评论 -
[C++] [OpenGL ES 3.0] 写了个GLTexture
p.s.需要stb_image.h,可在github下载p.s.因为未知原因,写到文件里去后所占内存会增大p.s.写得不咋地#ifndef _TEXTURE_HPP_#define _TEXTURE_HPP_#include <GLES3/gl3.h>#include <vector>#include <fstream>#include <sstream>#define STB_IMAGE_IMPLEMENTATION#include ".原创 2021-09-26 20:36:39 · 156 阅读 · 0 评论 -
[C++] [OpenGL ES 3.0] 简单着色器类
Shader.hpp#ifndef _SHADER_HPP_#define _SHADER_HPP_#include <GLES3/gl3.h>#include <string>#include <fstream>#include <sstream>#include "glm/glm.hpp"#include "glm/gtc/matrix_transform.hpp"#include "glm/gtc/type_ptr.hpp"stru原创 2021-08-12 15:15:16 · 238 阅读 · 0 评论