文章

2·多线程、构建运行模式、断言、tan2、texture设置

UE多线程_CPU

  • game,render,RHI,都属于Cpu线程
  • Runnable、只包含基础的功能

    • 语法:
      • FRunnable可运行对象
        • init 创建线程时调用
        • run 初始化完成且成功调用(即开始运行线程,执行一次)
        • stop 被提前终止时调用
        • exit 完成之后调用
      • FRunnableThread运行线程
        • Create( FRunnable* InRunnable, const TCHAR* ThreadName)创建线程
  • TaskGraph、可以控制线程任务的顺序

    • 语法:
      • TGraphTask定义的任务
        • 构造T
          • TGraphTask< T >::CreateTask(Params list).ConstructAndDispatchWhenReady(传入构造的参数列表),满足条件立即执行(前置任务是否都完成)
          • TGraphTask< T >::CreateTask(Params list).ConstructAndHold(传入构造的参数列表),满足条件且调用Unlock才执行
            • Params list
              • FGraphEventArray rerequisites:前置任务数组
              • ENamedThreads::……Thread指定任务运行的线程
              • ETaskFlags::任务标志
        • GetCompletionEvent()返回FGraphEventRef
        • Unlock()执行
      • FGraphEvent等待某项任务的任务列表
        • FGraphEventRef是FGraphEvent的指针
        • FGraphEventArray,FGraphEventRef 的数组
        • DontCompleteUntil(FGraphEventRef ), A->DontCompleteUntil(B),延迟执行A直到B完成
  • AsyncTask,利用线程池机制来调度任务

    • 继承FNonAbandonableTask创建线程类,不会丢弃而且等待执行完
    • FAutoDeleteAsyncTask< FNonAbandonableTask* >()->StartBackgroundTask线程池里空闲的线程来执行
    • FAutoDeleteAsyncTask< FNonAbandonableTask* >()->StartSynchronousTask主线程执行,会阻塞主线程
    • FAutoDeleteAsyncTask任务执行完就会自动删除
  • AsyncTask、创建了一个立刻执行的任务

    • AsyncTask(ENamedThreads::, void func)
  • Async、
  • AsyncThread、
  • AsyncPool

UE构建运行模式

  • DebugGameEditor,和DebugGame类似,用于在Unreal Editor中调试
  • DevelopmentEditor,和Development类似,用于在Unreal Editor中调试
  • DebugGame,包含调试符号,可执行文件较大运行较慢,用于开发阶段,需要打包运行
  • Development,保留了部分调试信息,可执行文件被提高性能,用于开发阶段后的测试阶段,需要打包运行
  • Shipping,移除所有的调试符号,可执行文件运行速度较快,用于发布模式

UE断言Assert

  • 作用:
    • 是一种调试手段,可以让程序立即终止,适用于绝对不应该出现的情况,并不影响发布的性能
  • 相关宏:
    • DO_CHECK是否禁用check
    • DO_GUARD_SLOW是否是调试模式
  • 分类:
    • check族,Expression 如果为false,中断执行
      • check(exp);DO_CHECK == 1
      • checkf(exp, msg);
      • verify(exp);DO_CHECK ==0/1
      • verify(exp, msg);
    • checkSlow族,Expression 如果为false,调试模式时引擎崩溃,非调试模式不会执行
      • checkSlow(exp);
    • ensure族,Expression 如果为false,不会中断执行,会打印堆栈信息
      • ensure(exp);
      • ensureMsg(exp, msg);

UE tan2

alt text

alt text

alt text

UE texture设置

alt text

本文由作者按照 CC BY 4.0 进行授权
本页总访问量