![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OpenGL渲染
文章平均质量分 84
记录渲染管线相关内容
遂古之初,谁传道之
曾任华为、百度高级工程师,从事AI芯片框架的底层算子优化,如果你有相关问题可以咨询。
展开
-
基于纹理缓冲实现OpenGL和CUDA的交互
基于缓冲对象的交互 要实现OpenGL和CUDA交互,最常用便捷的方式就是,在OpenGL中创建缓冲对象,将其注册并绑定到一个内存指针,将这个指针传入CUDA核函数中进行读写。关于这点,可以参考笔者之前的文章------基于C++与CUDA的N卡GPU并行程序——OpenGL图形互操作性。// 创建窗口缓冲int c=1;char *dummy;glutInit( &c, &dummy );glutInitDisplayMode( GLUT_SINGLE | GLUT_RGBA原创 2021-07-21 16:11:02 · 1057 阅读 · 0 评论 -
CUDA的texture纹理
CUDA数组与设备内存从相同的物理内存池中分配,但是前者为2D和3D做了一个局部优化,图形驱动程序则利用这个布局保存纹理,使硬件在2D或3D元素块上操作,取代了1D寻址。对展示出稀疏访问模式的应用程序,特别是有维度局部性的程序,使用CUDA数组会更好。而对于有常规访问模式的应用程序,没有多少数据的重用,选择使用设备内存指针会更好。 纹理引用是CUDA用来设置纹理硬件解释实际内存内容的对象,有了这个间接层,多个纹理引用可以使用不同的属性,来引用相同的内存。 CUDA运行时和CUDA驱动程序的API原创 2021-06-10 22:32:26 · 1977 阅读 · 10 评论 -
OpengGL基于glut创建窗口绘图
在OpenGL的渲染绘图中,可以基于glut、glew等方式,直接在创建桌面上创建一个窗口,并进行绘图。也可以使用EGL的方式来创建渲染窗口,同时EGL也可以直接支持无屏模式的渲染窗口。在之前的文章中讲了如何使用EGL创建无屏渲染窗口,在这里记录一下使用glut创建可视化渲染窗口。#include <GL/glut.h> void render(){ glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_TRIANGLES); gl原创 2021-05-11 13:57:50 · 819 阅读 · 2 评论 -
OpenGL和CUDA互操作的显卡驱动问题
使用OpenGL进行图形渲染并显示出来,然后使用CUDA进行计算,将计算结果传输到OpenGL的渲染管线中。在这里可能会遇到一个问题,代码执行到cudaGraphicsGLRegisterBuffer()函数会出错,CUDA的API接口会抛出一个错误代码999,这表示是未知的错误。 然后试着,添加一段代码 cudaDeviceProp prop; int dev; memset( &prop, 0, sizeof( cudaDeviceProp ) ); p原创 2021-04-01 14:21:17 · 1743 阅读 · 1 评论 -
《Fast Hierarchical Importance Sampling with Blue Noise Properties》摘要
图像采样点集 给定一个二维区域DDD上的重要性密度III,在这个区域上找出一个采样的点集,使其局部密度正比于重要密度III。如下图所示,图片中亮的区域多采点,暗的区域少采点。 这篇文章,提出了一种新方法,可以有效地生成给定重要性密度的2D区域上的采样模式.Penrose切片被细分为多个层次,从而创建了足够数量的采样点。 这些点使用斐波那契数系统进行编号,并且这些数字用于针对重要性密度的局部值对样本进行阈值处理。 使用预先计算的校正向量用于改善采样模式的光谱特性。 该技术是确定性的,并且非常快。 采样原创 2021-03-26 21:56:13 · 349 阅读 · 0 评论 -
基于C++与CUDA的N卡GPU并行程序——OpenGL图形互操作性
图形互操作性的极简框架示例 GPU的成功要归功于它能实时计算复杂的渲染任务,同时系统的其他部分还可以执行其他的任务,这就带来了一个显而易见的问题:能否在同一个应用程序中GPU既执行渲染计算,又执行通用计算?如果要渲染的图像依赖通用计算的结果,那么该如何处理?或者在已经渲染的帧上执行某种图像处理,又该如何实现? 在通用计算和渲染模式之间存在这种互操作,CUDA C应用程序可以无缝地与Open...原创 2020-05-04 22:01:08 · 2053 阅读 · 2 评论 -
基于C++与CUDA的N卡GPU并行程序——虚幻5渲染视频很牛逼?让我们从底层C++开始自制光线追踪渲染器,并自制高级版《我的世界》
哈喽,带嘎吼.最近5月13日,官方放出了虚幻5的演示视频,据说是可以同屏显示数亿三角形,从而实时渲染出电影级别的画质,其动态光照效果也是极其逼真.原创 2020-05-24 16:17:55 · 2101 阅读 · 4 评论 -
基于linux系统的OpenGL环境(四)——红宝书简单示例
创建缓存 在OpenGL中绘制模型图像,首先要创建并分配缓存区,然后将模型的顶点数据传入到缓存区中。GLuint vao, vbo[2];// 设置顶点缓存glGenVertexArrays(1, &vao);glBindVertexArray(vao);// 顶点缓存数据glGenBuffers(2, vbo);// 分配OpenGL缓存空间long unsigned int size_array = sizeof(GLfloat) * num * 4;// 顶点数据1gl原创 2020-12-29 20:53:30 · 524 阅读 · 2 评论 -
基于linux系统的OpenGL环境(三)——运行红宝书上的示例程序
第9版OpenGL红宝书示例程序绘制三角形#include <stdio.h>#include <iostream>#include <malloc.h>#include <EGL/egl.h>#include <EGL/eglext.h>#include <GL/gl.h>#include <GL/glext.h>#define EGL_EGLEXT_PROTOTYPES#include "OpenG原创 2020-12-01 17:38:47 · 1021 阅读 · 0 评论 -
基于linux系统的OpenGL环境(二)
OpenGL函数文档远程显示设备 继续上一篇,使用EGL创建surface之后,就可以进行编译和执行了# 编译链接gcc -o example example.c -lEGL# 执行./example如果程序马上执行结束,就是属于正常的,如果程序卡在那里不动也没有结束,就说明还有问题,可能是在寻找显示设备DISPLAY,但是寻找不到就卡在那里。EGL创建的surface会绑定到一个默认显示设备上,而linux中可以通过设置DISPLAY变量来指定显示设备,同时也可以将显示设备设置为一个远程原创 2020-11-27 22:15:02 · 1259 阅读 · 0 评论 -
基于linux系统的OpenGL环境
简介相关资料有khronos.org/eglnvidia developer blogOpenGL without X.org in linuxPyOpenGL headless rendering linux系统对于图形渲染的支持是非常复杂繁琐的,对于初学者,人都会看晕了,这其中涉及很多东西如GL,EGL,GLX,WGL,AGL,XGL,XGLX,GLUT,GLFW,GL3W,GLEW,GLAD,GLU,GLM,X11,Xming,Xmanager,Xserver,wayland,Vulka原创 2020-11-26 23:18:36 · 4013 阅读 · 0 评论 -
PyOpenGL帧缓存
安装python -m pip install PyOpenGL PyOpenGL_accelerate -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com文档资料PyOpenGL在Pypi的地址PyOpenGL开发文档PyOpenGL在python上与C的部分区别GL开发文档GLU开发文档 参考书有《OpenGL Programming Guide》,俗称“红宝书”。离屏渲染 刚开始原创 2020-11-23 16:23:01 · 751 阅读 · 1 评论