我仍然对使用表面很陌生,但是我知道如何轻松地耗尽VRAM并砍掉所有东西,所以我想确保我做对了。我在创建事件中创建表面,通过检查是否存在来启动绘制事件,并且只有在没有表面时才创建一个新的。但是,与我观看的指南不同,我仍然选择在绘制事件结束时释放表面,而不是在清除事件中。我的主要原因是因为我需要表面覆盖整个房间,而由于我不知道房间大小,所以我不想冒着制作一个巨大的表面,占用太多资源的风险,所以我只是每帧创建一个新的表面,大小与窗口相同。我走了一圈,跟随摄像机,缩小了窗口,似乎一切都正常,但如果我哪儿做错了,我宁愿现在就发现。如果 !surface_exists(shadow_surface) { shadow_surface = surface_create(window_get_width(), window_get_height()); } surface_set_target(shadow_surface); draw_clear(c_black); gpu_set_blendmode(bm_subtract); draw_set_color(c_white); with obj_window_shadow { draw_primitive_begin(pr_trianglestrip); draw_vertex(x1, y1); draw_vertex(x2, y2); draw_vertex(x3, y3); draw_vertex(x4, y4); draw_primitive_end(); } gpu_set_blendmode(bm_normal); surface_reset_target(); draw_surface(shadow_surface, 0, 0); surface_free(shadow_surface);
需要帮助检查我的表面。
评论 (0)