RenderDoc基础类 + Python“基础”代码

2023-09-19 10:38:13

这应该是国内第一份甚至是唯一份讲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 = name
        self._age = age
        self.__account = account
    def 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: ugly
    if '[' in v.name or ']' in v.name:
        # v is a row of a matrix
        valstr = ''
        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)

更多推荐

python+nodejs+php+springboot+vue 学生选课程作业提交教学辅助管理系统

二、项目设计目标与原则1、关于课程作业管理系统的基本要求(1)功能要求:可以管理首页、个人中心、公告信息管理、班级管理、学生管理、教师管理、课程类型管理、课程信息管理、学生选课管理、作业布置管理、作业提交管理、作业评分管理、课程评价管理、课程资源管理等功能模块。(2)性能:在不同操作系统上均能无差错实现在不同类型的用户

[答疑]角色和状态的区别

DDD领域驱动设计批评文集“软件方法建模师”不再考查基础题《软件方法》各章合集jeri2023-9-1013:09设备关联角色,设备也有子类(车辆/设备),按书中的解释,设备是一个抽象类,角色类名像是带了状态名的类,如在使用的设备/在维护的设备,设备和这几个角色是关联关系,而且是0.1的关系,潘老师的观点是泛化关系还是

Linux下的网络编程——网络基础、socket编程(一)

前言:前面我们学习了Linux的系统编程,从今天我们就要开始Linux网络编程的学习了,Linux网络编程中的知识点可能没有前面的Linux系统多一点,但是基础的网络知识我们还是需要了解的,并且网络编程中的socket编程的知识也是相当重要的,那么现在我们就开始Linux网络编程的学习吧。目录一、协议1.7层模型和4层

使用Oracle实现完美的不重复随机数(oracle不重复随机数

使用Oracle实现完美的不重复随机数Oracle是一个功能强大的关系型数据库管理系统,它可以实现各种数据库操作和管理。在许多应用程序中,生成随机数是一个非常常见的任务。然而,许多时候,我们需要生成不重复的随机数,以确保数据的完整性和准确性。下面我们将介绍如何使用Oracle实现完美的不重复随机数。生成不重复随机数的方

Linux系统编程——进程间通信的学习

学习参考博文:进程间的五种通信方式介绍Linux信号介绍Linux系统编程学习相关博文Linux系统编程——文件编程的学习Linux系统编程——进程的学习Linux系统编程——线程的学习Linux系统编程——网络编程的学习Linux系统编程——进程间通信的学习一、概述1.无名管道和有名管道的区别2.当打开一个FIFO时

智能热水器语音控制丨打造智能家居新体验

随着科学技术的不断发展,智能电器越来越被大众所采纳,如智能扫地机,智能洗衣机,智能微波炉等等,越来越智能的电器为人们的生活带来了许多便利。以往的热水器一般都是只有按键/机械的控制方式,没有其他无线控制的控制方式。但现在新增了语音功能控制。用户通过语音控制智能热水器进行加热或保温等操作,无需用户手动控制;为人们带来了全新

电脑怎么录音,亲身测评,让你事半功倍!

“电脑怎么录音呀?最近学校的十大歌手比赛快开始了,需要自己录制一段音频线上参赛,通过的人才能参与线下的复赛,可是我的伴奏一直有杂音,就想问问大家,有没有比较好用的电脑录音方法呀?”在当今这个信息爆炸的时代,录音已经成为我们日常生活中不可或缺的一部分。无论是录制会议、讲座、课程还是简单的个人笔记,录音工具都能为我们带来极

从丢失msvcp140_codecvt_ids.dll到修复,解决方法详解

在日常计算机使用过程中,我们有时会遇到一些烦人的错误提示。其中之一就是丢失了msvcp140_codecvt_ids.dll文件。当我们打开某些应用程序或游戏时,可能会收到类似于“找不到msvcp140_codecvt_ids.dll”或“该应用程序无法正常启动”的错误信息。这可能会影响我们的工作效率或是影响我们游戏的

字符串函数----篇章(1)

目录补上章缺失的两道题七.笔试题(7)八.笔试题(8)一.字符串函数(1)----strlen函数二.字符串函数(2)----strcpy函数2-1模拟实现strcpy三.字符串函数(3)----strcmp函数​编辑3-1模拟实现strcmp四.字符串函数(4)----strcat函数​编辑4-1模拟实现strcat

IBM LSF 任务调度系统的主要术语和概念

LSF术语和概念了解IBMLSF基本术语和概念。作业状态IBM®SpectrumLSF作业具有多个状态。PEND正在队列中等待调度和分派。RUN已分派到主机并正在运行。DONE正常完成,退出值为零。EXIT已完成,具有非零退出值。PSUSP作业处于暂挂状态时已暂挂。USUSP由用户暂挂。SSUSP由LSF系统暂挂。PO

博格华纳高压发卡式电机解析

博格华纳的高压发卡式电机具有功率强大、坚固耐用和高性能等特点,采用紧凑型设计,优化的导体绕组结构缩短了电机的尺寸,使其便于在更小的空间内进行安装,并提高了常用区间的工作效率。此外,电机在设计上减少了重稀土元素,降低了电机成本,通过优化辅助槽,实现了出色的噪声(NVH)、振动及舒适度的表现,在满足客户对汽车静谧性需求的同

热文推荐