view_surface_id


描述

使用此变量可将给定可视区域的内容设为绘制曲面,或者得到目前被分配给这个可视区域的表面。在处理曲面时,通常需要把整个 屏幕上的可视区域捕获到表面,所以你需要使用此变量来将表面分配给一个可视区域。这意味着所选视野内的所有显示的画面将被绘制到指定的表面。此视野现在不会被绘制到屏幕上,这意味着你需要做下列操作:

你可以读取这个变量以获取选择的表面的已经指定的表面的索引,如果没有指定表面则返回-1,并且一般用于这个函数的表面应该和视野一样大小(不是可视区域)。下面的扩展例子展示了在 Draw GUI 事件中捕获视野的基本设置,更多表面的信息查看章节 Reference - Surfaces

注意,你也可以用函数 view_set_surface_id()来为可视区域设置表面。


语法:

view_surface_id[0...7];


Returns:

实数(表面的索引,如果没有索引,就返回-1)


Extended 举例:

在这个扩展例子里,我们将创建一个表面并且指定给 view port[0],然后在 Draw GUI 事件中绘制到屏幕上。首先我们需要在创建事件(Create Event)中初始化表面变量。

surf = -1;

由于所有的表面函数真正在 Draw 事件中使 用,为了防止奇怪的错误或者未定义的行为,我们设置表面变量为-1。 接着,那个完成之后,我们需要在主要的Draw 事件中做这些事件:

if !surface_exists(surf)
   {
   surf = surface_create(camera_get_view_width(view_camera[0]), camera_get_view_height(view_camera[0]));
   view_surface_id[0] = surf;
   }

表面是 不稳定的,意味着系统内存的管理或其它原因,它们可能会从内存中销毁,所以这里检测表面是否存在,如不存在则创建它,并指定给一个视野。之后,所以将出现在视野view 0中的事物现在绘制到我们创建的表面层里。. 如果不做到这一步,运行游戏时将会简单的获得一个空白的屏幕,因为所有的绘制都是在表面里完成的,但是表面层并不会在任何地方绘制出来。因为现在需要在 Draw GUI 事件中,像这样绘制这个表面到屏幕上:

if surface_exists(surf)
   {
   draw_surface_stretched(surf, 0, 0, display_get_gui_width(), display_get_gui_height());
   }

此代码将拉伸我们从视野摄像机绘制的表面,以填满整个GUI层。


上一页: Cameras
下一页: view_set_camera
© Copyright YoYo Games Ltd. 2018 All Rights Reserved