这应该是国内第一份甚至是唯一份讲renderDoc的免费二开的文档,基于Python,Qt等
(这是一个冷门的学科,本身做TA比例就只有1/10,技术TA的比例又1/10,然后会做工具几年资历的又1/10,假如1000个观众,应该只有1个观众会往下看,谢谢观看!!)
RenderDoc生命周期和常用类
qdCaptureView
#python 中 renderDoc 类的继承这么写
import qrenderdoc as qrd
class Window(qrd.CaptureViewer):def __init__(self, ctx: qrd.CaptureContext, version: str):super().__init__()print("Creating WIMD window")
属性和事件
event | def OnEventChanged(self, event): draw = self.ctx.GetAction(event) | 竟然是点击drawCall(事件),也可以键盘上下选择drawCall,会触发这个方法 |
Python代码-常规
私有属性(有些鸡肋)
python对于类的成员没有严格的访问控制限制,这与其他面向对象的语言有区别。关于私有属性和私有方法,有如下要点:
1)通常我们约定,两个下划线开头的属性是私有的,其他是公共的;
2)类内部可以访问私有属性(方法)
3)类外部不能直接访问私有属性(方法)
4)类外部可以通过“_雷鸣__私有属性(方法)”访问私有属性(方法)
class Employee:
def __init__(self,name,age):
self.name = name
self.__age = age
e = Employee("gaoqi",18)
print(e.name)
print(e.__Employee__age)
报错:AttributeError: 'Employee' object has no attribute '__Employee__age'
正确写法是“_Employee__age”,类名前面是一个下划线;
另外可看看。。。。
Python - 面向对象编程 - 公共属性、保护属性、私有属性-腾讯云开发者社区-腾讯云
公共属性(官方例子不一定对)
估计最新版本的python 不支持-再下面这种官方文档写法了
(尽信书不如无书,我试过,65,66行这么写是错的,69这么写反而对,应该随意一个方法都可以写self.xxx,
但还是建议统一在头部,__init__统一写)
(官方文档写法)
class PoloBlog:# 公共属性sum = 0# 构造方法def __init__(self, name):self.name = name# 公共方法def test(self):...
Global属性(写法有些怪异)
Python 全局变量
#全局变量
city = "Athens"def travel_plans():#首先,这就像我试图访问在函数外部定义的全局变量时一样。#正如您之前所见,这本身就可以正常工作。print(f"I want to visit {city} next year!")#但是,当我尝试从函数内部为全局变量 “city” 重新分配不同的值时,#尝试打印后,#它会抛出一个错误city = "London"print(f"I want to visit {city} next year!")#调用函数
travel_plans()#输出#UnboundLocalError: local variable 'city' referenced before assignment
打印所有属性
Python教程(十)面向对象(9)类的访问控制 - songz
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
class UserInfo(object):def __init__(self, name, age, account):self.name = nameself._age = ageself.__account = accountdef get_account(self):return self.__account
if __name__ == '__main__':userInfo = UserInfo('两点水', 23, 347073565);# 打印所有属性print(dir(userInfo))# 打印构造函数中的属性print(userInfo.__dict__)print(userInfo.get_account())# 用于验证双下划线是否是真正的私有属性print(userInfo._UserInfo__account)
空方法,默认参数
def saveShaderText(t):pass
# 调用方法:
# for v in cbufferVars:
# s+=print_var(v)
def print_var(v, indent = ''):# TODO: uglyif '[' in v.name or ']' in v.name:# v is a row of a matrixvalstr = ''indent = ''
Python API级别代码,常用
判断python版本
hasattr - 是否包含属性
if hasattr(shader, 'programResourceId'):
最后第三方链接
这些大佬,对于python语法的详细说明,就挺好了,
(个人只是陆陆续续,用了Python很多年,对2.7和3.2也不是很熟悉,不是很熟悉最新发展)
只是现在回过头来看,那时候还“证明”过2.7和3.2的区别,现在看来基搞笑,2.7过时是必然的,3.2->3.X 是历史发展的必然
(世界大同还是挺好的,Python从无政府状态,逐渐增加一些监督管理;而TypeScript在强政府的道路上注定走不远,貌似把javaScript干掉了,其实最终发现自己不得不成为另一个javaScript,这是各大普通程序员的人心所向)
Python类型注解,你需要知道的都在这里了 - 知乎 (zhihu.com)