我没有找到一个关于绘图表面概念的好定义。哪些属性与表面相关?在纯OpenGL上下文中,没有表面的概念,因为OpenGL没有窗口系统特定事物的概念。然而,在OpenGL ES中你有EGL API,引入了绘图表面的概念,但没有适当地定义它。那么,您对绘图表面有什么简明扼要的定义呢?
基本上,一个Surface是一个渲染目标。它是一种设备上下文,但可能更智能,因为Surface可以知道如何显示自己或执行其他有用的操作。EGL有三种Surface类型: Window Surface: 窗口。 Pixmap Surface: 图像。 Pbuffer Surface: 像素缓冲区。 这篇论坛帖子可能会有所帮助。
在Direct3D世界中,表面(surface)通常是指一些二维图像数据。纹理(texture)则是可以被采样并在着色器中使用的东西。通常来说,纹理是由表面组成的;例如,一个2D纹理的每个mip-map都是一个表面,而立方体贴图(cube map)的每个面都是一个表面。
在Direct3D中,硬件表面通常是DirectDraw表面格式中的硬件内存部分,但并非总是如此。这与DDS图像文件使用的格式相同,基本上由标头和在标头部分指定的几种图像格式之一的图像数据组成。通常的属性是宽度、高度、像素格式,以及可能还有一些杂项,如立体声(当然可能实际上不支持)。它基本上只是一个通用术语,用于表示图像。