opengl

Drawing a triangle in OpenGL fragment shader

我们两清 提交于 2020-11-29 23:42:40
问题 I'm trying to draw a triangle using an OpenGL fragment shader. I succeeded in drawing a circle but I have a problem with handling the equation/logic or the code to draw a triangle. draw_triangle(vec2 v1 , vec2 v2, vec2 v3) Here is the fragment shader: #version 330 core out vec4 frag_color; void draw_circle(vec2 shift_val, int radius,int color) { vec2 res = vec2(1280,720); vec2 norm_cord = gl_FragCoord.xy; float dist = length(norm_cord - (res*shift_val)); if( dist < radius ) { if( color ==1 )

grid not showing (it is all black)

亡梦爱人 提交于 2020-11-29 21:29:41
问题 I didn't want to go back to the same question from yesterday, however before I am able to use the function to turn on and off the grid, I first need to know if my grid is actually working, I have been making new projects all night trying to display the grid but it isn't showing, the screen is always black and nothing is there at all. #include "include\freeglut.h" // OpenGL toolkit - in the local shared folder #include <iostream> //set up some constants #define X_CENTRE 0.0 /* centre point of

grid not showing (it is all black)

被刻印的时光 ゝ 提交于 2020-11-29 21:24:40
问题 I didn't want to go back to the same question from yesterday, however before I am able to use the function to turn on and off the grid, I first need to know if my grid is actually working, I have been making new projects all night trying to display the grid but it isn't showing, the screen is always black and nothing is there at all. #include "include\freeglut.h" // OpenGL toolkit - in the local shared folder #include <iostream> //set up some constants #define X_CENTRE 0.0 /* centre point of

grid not showing (it is all black)

丶灬走出姿态 提交于 2020-11-29 21:07:06
问题 I didn't want to go back to the same question from yesterday, however before I am able to use the function to turn on and off the grid, I first need to know if my grid is actually working, I have been making new projects all night trying to display the grid but it isn't showing, the screen is always black and nothing is there at all. #include "include\freeglut.h" // OpenGL toolkit - in the local shared folder #include <iostream> //set up some constants #define X_CENTRE 0.0 /* centre point of

升级到Unity 5.4

徘徊边缘 提交于 2020-11-26 04:24:17
升级到Unity 5.4 当将项目从Unity 5.3升级到Unity 5.4时,有一些更改,您应该注意哪些可能会影响您现有的项目。 网络:多人服务API更改 许多更改联网API 。 网络:WebRequest不再实验 该WebRequest接口已经从推广UnityEngine.Experimental.Networking到UnityEngine.Networking。使用统一5.2和5.3的项目UnityWebRequest将必须被更新。 场景视图:音频映射不会自动应用 与图像效果ImageEffectTransformsToLDR属性将如果发现不再直接应用到场景图。一个新的属性存在应用效果的场景观点:ImageEffectAllowedInSceneView。5.4标准资产已升级,以反映这种变化。 着色器:重命名的变量 为了一致性,重命名了一些内置着色器变量: _Object2World 和 _World2Object 现在 unity_ObjectToWorld 和 unity_WorldToObject _World2Shadow 现在 unity_WorldToShadow [0] , _World2Shadow1 是 unity_WorldToShadow [1] 等。 _LightMatrix0 现在 unity_WorldToLight

Qt框架及模块认识

∥☆過路亽.° 提交于 2020-11-25 05:02:20
小白自工作就接触Qt,一直都在使用Qt5.3.1版本,所以没有经历过大牛们把项目从Qt4程序到Qt5的烦恼,没准以后会碰到。对Qt所有的丰富的API表示惊叹,对于Qt的框架及模块认识也是极为模糊的,文中有不对之处希望大牛们打脸(虽然脸都已经被打肿了。。。。) 1、Qt的跨平台性(Linux、Unix、、Mac OS、Android、IOS) 简而言之:Qt的功能是建立在它所支持的平台底层API之上的。 Qt/Windows对应的是GDI(Graphics Device Interface),很容易就知道它是Qt封装的与GDI交流的API。而GDI是Windows下图形绘制及显示的主要API。 Qt/X11同样是对X Windows的编程接口。Linux本身是没有操作界面的,目前主流带有操作界面的Linux系统都是基于X WIndows的,已经列入了Linux发行标准软件了。X Windows是C/S框架的(就是所有的鼠标事件传递到X Windows的服务端处理之后对应在屏幕上显示内容),Qt/X11使用Xlib直接与X服务器通信的。(GDI是集成到Windows内核的,而X Windows只是Linux系统的应用软件而已) Qt/Macintosh就不用说了。Carbon是Mac OS X下应用程序开发环境,包含了应用程序的图形部分。目前主流的Cocoa好像使用更好。

OpenGL学习随笔(三)-- OpenGL ES 2.0渲染管线

别来无恙 提交于 2020-11-24 13:36:24
OpenGL ES的主要作用是将3D的场景显示到2D的屏幕上,在图形学中,这个过程通过一系列的渲染管线完成。OpenGL ES API就是用来向各个阶段提供一些数据和状态指令,一使渲染管线能够按照要求正确地将物体绘制在屏幕上。 OpenGL ES 2.0实现了可编程的图形管线,比起1.x的固定管线要复杂和灵活很多,由两部分规范组成:Opengl es 2.0 API规范和OpenGL ES着色语言规范。下图是OpenGL ES 2.0渲染管线,阴影部分是OpenGL ES 2.0的可编程阶段。 左边的客户端程序通过调用Open GL接口,将定点。着色器程序、纹理,以及其他GL状态参数传入右边的GL服务端,然后在客户端调用绘制命令(如DrawArray),GL便会对输入的元素逐一执行渲染的每个阶段,然后调用每个像素的颜色值写入帧缓冲区(Framebuffer)中,最后视图系统就可以将帧缓冲区的颜色值显示在屏幕上了。此外,应用程序也可以从帧缓冲区中将数据读取到客户端。 图中Vertex Shader和Fragment Shader 是可编程管线; A、Vertex Array/Buffer objects(顶点数值) 顶点数据来源,这时渲染管线的顶点输入,通常使用 Buffer objects效率更好。 B、Vertex Shader(顶点着色器) 顶点着色器通过矩阵变换位置

OpenGL ES 入门

我只是一个虾纸丫 提交于 2020-11-24 13:36:12
写在前面 记录一下 OpenGL ES Android 开发的入门教程。逻辑性可能不那么强,想到哪写到哪。也可能自己的一些理解有误。 参考资料: LearnOpenGL CN Android官方文档 《OpenGL ES应用开发实践指南Android卷》 《OpenGL ES 3.0 编程指南第2版》 一、前言 目前android 4.3或以上支持opengles 3.0,但目前很多运行android 4.3系统的硬件能支持opengles 3.0的也是非常少的。不过,opengles 3.0是向后兼容的,当程序发现硬件不支持opengles 3.0时则会自动调用opengles 2.0的API。Andorid 中使用 OpenGLES 有两种方式,一种是基于Android框架API, 另一种是基于 Native Development Kit(NDK)使用 OpenGL。本文介绍Android框架接口。 二、绘制三角形实例 本文写一个最基本的三角形绘制,来说明一下 OpenGL ES 的基本流程,以及注意点。 2.1 创建一个 Android 工程,在 AndroidManifest.xml 文件中声明使用 opengles3.0 <!-- Tell the system this app requires OpenGL ES 3.0. --> <uses-feature

OpenGL ES: (1) OpenGL ES的由来 (转)

萝らか妹 提交于 2020-11-24 13:24:06
1. 电脑是做什么用的? 电脑又被称为计算机,那么最重要的工作就是计算。看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的操作。 2. 是什么使电脑工作? 驱动,驱使着硬件完成工作。 3. 谁来写驱动? 制造电脑的公司自己来写驱动,因为他们对自己的底层硬件架构最熟悉。 4. 谁会使用驱动? 所有的软件工程师都会直接或者间接的使用到驱动。那么问题来了,如果说不同的电脑公司,制造出来不同的硬件,使用不同的 驱动,提供出来不同的接口供软件工程师进行使用,那么软件工程师就要崩溃了。 所以,一定是需要一个标准,来统一一下。 5. 那么在哪里进行统一? 硬件没有办法统一,每个电脑公司为了优化自己电脑性能和功耗,制造出来 不同的硬件架构,这是需要无数的心血完成的,如果统一了,那么就不需要那么 多电脑公司了。 所以只能统一驱动的接口。 电脑组件大致分为:CPU、GPU、内存、总线等。而 OpenGL 就是 GPU 驱动 的一套标准接口(OpenGL ES 为嵌入式设备 GPU 驱动的标准接口,比如手机, OpenGL ES 全称:OpenGL for Embedded Systems)。 所以综上所述,我使用了 5 个问题,引出了 OpenGL 的用处:就是 将复杂的、 各种各样的 GPU 硬件包装起来,各个电脑公司编写自家的驱动,然后提供出来

[OpenGL ES] 正交投影

我只是一个虾纸丫 提交于 2020-11-24 12:26:45
在OpenGL中就需要用到矩形来改变顶点坐标的范围,最后再归一化就可以了。 顶点着色器中添加矩阵 vertex_shader_m.glsl attribute vec4 v_Position; attribute vec2 f_Position; varying vec2 ft_Position; uniform mat4 u_Matrix; void main() { ft_Position = f_Position; gl_Position = v_Position * u_Matrix; } 然后根据图形宽高和屏幕宽高计算(?)的长度 orthoM(float[] m, int mOffset, float left, float right, float bottom, float top, float near, float far) Matrix.orthoM(matrix, 0, -width / ((height / 702f * 526f)), width / ((height / 702f * 526f)), -1f, 1f, -1f, 1f); Matrix.orthoM(matrix, 0, -1, 1, - height / ((width / 526f * 702f)), height / ((width / 526f * 702f)), -1f, 1f