1.3. 执行模型 Execution Model

1.3. 执行模型 Execution Model

The OpenGL API is focused on drawing graphics into frame buffer memory and, to a lesser

extent, in reading back values stored in that frame buffer. It is somewhat unique in that its

design includes support for drawing threedimensional geometry (such as points, lines, and

polygons, collectively referred to as PRIMITIVES) as well as for drawing images and bitmaps.

The execution model for OpenGL can be described as client-server. An application program (the

client) issues OpenGL commands that are interpreted and processed by an OpenGL

implementation (the server). The application program and the OpenGL implementation can

execute on a single computer or on two different computers. Some OpenGL state is stored in

the address space of the application (client state), but the majority of it is stored in the address

space of the OpenGL implementation (server state).

OpenGL commands are always processed in the order in which they are received by the server,

although command completion may be delayed due to intermediate operations that cause

OpenGL commands to be buffered. Out-of-order execution of OpenGL commands is not

permitted. This means, for example, that a primitive will not be drawn until the previous

primitive has been completely drawn. This in-order execution also applies to queries of state

and frame buffer read operations. These commands return results that are consistent with

complete execution of all previous commands.

Data binding for OpenGL occurs when commands are issued, not when they are executed. Data

passed to an OpenGL command is interpreted when the command is issued and copied into

OpenGL memory if needed. Subsequent changes to this data by the application have no effect

on the data that is now stored within OpenGL.

时间: 2024-09-28 15:34:01

1.3. 执行模型 Execution Model的相关文章

JavaScript 对象模型 执行模型_javascript技巧

数据类型 基本数据类型 基本数据类型是JS语言最底层的实现. 简单数值类型: 有Undefined, Null, Boolean, Number和String.注意,描述中的英文单词在这里仅指数据类型的名称,并不特指JS的全局对象N an, Boolean, Number, String等,它们在概念上的区别是比较大的. 对象: 一个无序属性的集合,这些属性的值为简单数值类型.对象或者函数.同上,这里的对象并不特指全局对象Object. 函数: 函数是对象的一种,实现上内部属性[[Class]]

CUDA线程执行模型分析(二)大军未动粮草先行---GPU的革命

序:今天或许是比较不顺心的一天,从早上第一个电话,到下午的一些列的事情,有些许的失落.有的时候真的很想把工作和生活完全分开,但是谁又能真正的分得那么开,人非草木!很多的时候都想给人生下一些定义,添加一些注释.但是生活本来就是不需要添加注释的自解释的代码.用0来解释?还是用1来解释?0,天地之始,1,万物之源.谁又能说清楚,是先有0,还是先有1,他们本就是同体--要想成事,就应该拿得起,放得下.感叹人生的同时,人生的旅程是不会停止的--手下还有招来的那么多将士,都还等着啦! 正文:书接上回--<C

CUDA线程执行模型分析(一)招兵---GPU的革命

序:或许看到下面的内容的时候,你会觉得和传统的讲解线程,和一些讲解计算机的书的内容不是很相同.我倒觉得有关计算机,编程这些方面的内容,并不都是深奥难懂的,再深奥难懂的事情,其实本质上也是很简单的.一直以为计算机编程就像小时候搭建积木一样,只要知道游戏规则,怎么玩就看你自己了.或许是从小学那会,就喜欢在做数学题的时候用一些简便方法来解题,养成了一些习惯,喜欢把复杂的问题都会尝试用最简单的额方法来解决,而不喜欢把简单的问题弄得很复杂.不再多说了,有的朋友已经看得不耐烦了--ps:再罗嗦一句,如果下面

《CUDA C编程权威指南》——第3章 CUDA执行模型 3.1 CUDA执行模型概述

第3章 CUDA执行模型 本章内容: 通过配置文件驱动的方法优化内核 理解线程束执行的本质 增大GPU的并行性 掌握网格和线程块的启发式配置 学习多种CUDA的性能指标和事件 了解动态并行与嵌套执行 通过上一章的练习,你已经学会了如何在网格和线程块中组织线程以获得最佳的性能.尽管可以通过反复试验找到最佳的执行配置,但你可能仍然会感到疑惑,为什么选择这样的执行配置会更好.你可能想知道是否有一些选择网格和块配置的准则.本章将会回答这些问题,并从硬件方面深入介绍内核启动配置和性能分析的信息. 3.1

《CUDA C编程权威指南》——3.1节CUDA执行模型概述

3.1 CUDA执行模型概述 一般来说,执行模型会提供一个操作视图,说明如何在特定的计算架构上执行指令.CUDA执行模型揭示了GPU并行架构的抽象视图,使我们能够据此分析线程的并发.在第2章里,已经介绍了CUDA编程模型中两个主要的抽象概念:内存层次结构和线程层次结构.它们能够控制大规模并行GPU.因此,CUDA执行模型能够提供有助于在指令吞吐量和内存访问方面编写高效代码的见解. 在本章会重点介绍指令吞吐量,在第4章和第5章里会介绍更多的关于高效内存访问的内容.3.1.1 GPU架构概述 GPU

《CUDA C编程权威指南》——第3章CUDA执行模型

第3章CUDA执行模型本章内容:通过配置文件驱动的方法优化内核理解线程束执行的本质增大GPU的并行性掌握网格和线程块的启发式配置学习多种CUDA的性能指标和事件了解动态并行与嵌套执行通过上一章的练习,你已经学会了如何在网格和线程块中组织线程以获得最佳的性能.尽管可以通过反复试验找到最佳的执行配置,但你可能仍然会感到疑惑,为什么选择这样的执行配置会更好.你可能想知道是否有一些选择网格和块配置的准则.本章将会回答这些问题,并从硬件方面深入介绍内核启动配置和性能分析的信息.

《代码整洁之道》—第13章13.5节了解执行模型

13.5 了解执行模型有几种在并发应用中切分行为的途径.要讨论这些途径,我们需要理解一些基础定义,如表13-2所示. 有了这些定义,我们就能讨论在并发编程中用到的几种执行模型了.13.5.1 生产者-消费者模型[9]一个或多个生产者线程创建某些工作,并置于缓存或队列中.一个或多个消费者线程从队列中获取并完成这些工作.生产者和消费者之间的队列是一种限定资源. 13.5.2 读者-作者模型[10]当存在一个主要为读者线程提供信息源,但只偶尔被作者线程更新的共享资源,吞吐量就会是个问题.增加吞吐量,会

理解Javascript_13_执行模型详解_javascript技巧

函数执行环境 简单的代码: 复制代码 代码如下: function say(msg,other){ var str = "nobody say:"; this.name = '笨蛋的座右铭'; function method(){};//var method = function(){}; alert(str+msg); } say('hello world'); alert(name);//笨蛋的座右铭 当调用say方法时,第一步是创建其执行环境,在创建执行环境的过程中,会按照定义的

backbone学习笔记:模型(Model)(2)属性验证

Backbone的属性验证有2种方法:   1.Backbone自带简单的验证方法,但是验证规则需要自己实现      通过validate()方法进行验证,验证规则写在此方法里.      var RoomModel = Backbone.Model.extend({ validate:function(attrs){ //验证规则 if(!attrs.name){ return "名字不能为空"; } } });   那么什么时候调用validate()完成验证呢?    在调用s