D3DFrame 入门

用STM32F103C8T6做个万能遥控器:手把手教你解码美的空调R05D红外协议 本文详细介绍了如何利用STM32F103C8T6开发板制作一个智能空调遥控器,重点解析了美的R05D红外协议的解码与实现方法。通过硬件连接、协议解析、信号发射等步骤,手把手教你打造一个兼容美的空调的万能遥控器,并支持自动化控制和场景联动功能。 阅读详情

D3DFrame 入门

作者:Philip Taylor

发布日期:2000 年 5 月 15 日     将于 2000 年 6 月 19 日存档

下载 下载本文的源代码(63.9K)

欢迎关注“Driving DirectX”的第二个问题,MSDN Online Voices 的 DirectX® 专栏。在下面几个专栏中,我想着重讨论 Direct3d(R) (D3D) for DirectX 7.0。对于 D3D 示例和 D3DFrame,好的切入点是“DirectX 软件开发工具包 (SDK)”应用程序框架。所有的 D3D 示例都使用 D3DFrame。


使用公用的框架 D3DFrame,为我们提供了公共平台,在此平台上我们可以展开各种功能的讨论。

一些图形芯片厂商使用 D3DFrame 的变体作为自己的示例;例如 ATI SDK 使用具有某些 ATI 专用附件的 D3DFrame 版本。使用公共框架提供了公共平台,在此平台上可以进行如何启用各种功能的讨论。使用公共框架也使我能够避开 D3D 的一般“基本知识”。这并不意味着 D3DFrame 可以作为产品代码;相反,它只是编写短小精悍示例的“方便”工具而已。

开卷语

在开始说明 D3DFrame 之前,让我们回顾一下 DirectX SDK 基础知识,并提供关于 SDK 开发的共同语言。请确保在您建立的环境中,查找头文件和库文件目录的命令是正确的。常见的问题是这些错误的命令,导致了许许多多编译和链接错误。安装 DirectX SDK 的默认路径是 /mssdk。在安装 SDK 时您可以控制该路径。运行时的头文件和库文件保存在 /mssdk/include 和 /mssdk/lib 中。

SDK HTML Help 是大体了解 DirectX 的主要资源,特别是对 D3D。我在解决了某些问题,以及有了某种想法之后,多次重读了该文档中的段落,于是有了温故知新的感觉,“喔,原来是这么回事。”示例代码是学习 DirectX 另一个最好的工具。“Direct3D 立即模式”示例代码保存在 /mssdk/samples/multimedia/d3dim 中。在 /d3dim 下面为 /bin、/include、/lib、/media 和 /src。以准备建立的形式存在的所有示例,可以在 /src 中找到,这取决于 /include 和 /lib,并且使用 /media 中的艺术内容。SDK 安装程序将预先建立的可执行文件植入 /bin 下。我强烈推荐用示例来进行试验,并检验使用它们列出的功能所需的代码。这是快速使用 D3D 的最快的方法。

调试 DirectX 应用程序可能是个难题。让我来介绍几种使工作更轻松的有用的小工具和技术。DXDiag SDK 实用工具提供有关 SDK 安装的信息。一定要对您的系统了如指掌。如果发现任何缺陷,则需要这些信息来报告缺陷。而且,一定要在 SDK 安装时选择调试运行时选项。如此就能保证在调试运行时进行开发,调试运行时包含错误检查和报告,这能真正帮助您解释代码在哪里出现了偏差。调试运行时允许设置启用运行时内部调试的报告级。“DirectX 控制面板”允许开发人员将报告级设置为 0 到 5。我在调试时一般设置为 3,而对于特别严重的缺陷要设置为 5。任何调试程序可以跟踪调试。Visual C++ GUI 调试程序提供了调试输出窗格,专门用来跟踪调试。Visual C++ GUI 调试程序,只有在使用下列系统时,才能调试全屏独占应用程序:

  1. 多监视器系统
  2. 远程调试

在这种思想指导下,通常明智的做法是产生代码并先在窗口模式下调试,然后再专注于全屏幕。

高级视图

让我们现在回到 DirectX 7.0 D3DFrame。D3DFrame 是 Direct3D SDK 示例的示例框架。如果您确实想了解示例是如何工作的 — 不是了解示例中列出的功能 — 必须对 D3DFrame 如何工作有基本了解。首先我会带您进入包含所有必须了解的内容的 D3DFrame 高级视图,并且使用 D3DFrame 编写自己的示例。对于象谚语中的猫一样好奇的人,我将就 D3DFrame 的主要部分给出更详细等级的概要介绍,以便解释如何提供应用程序接口。在随后的讨论中,我将在示例应用 D3DFrame 的同时介绍有关 D3DFrame 的更多内容。


图 1. D3DFrame 项目视图

D3DFrame 由 7 个模块组成:

  1. D3DApp 展示了该示例使用的应用程序接口。
  2. D3DFrame 提供了应用程序接口使用的框架,“在该框架下”进行 voodoo 会很顺利。
  3. D3DEnum 包含对驱动程序、设备和模式的枚举支持。
  4. D3DTextr 提供纹理支持。
  5. D3DFile 提供 x-文件支持。
  6. D3DMath 给出数学实用程序函数。
  7. D3DUtil 包括剩下的其他各种有用的函数。

每个模块都是由一个 .cpp 源文件和 .h 头文件组成。源文件位于 d3dim/src。头文件位于 d3dim/include。框架库位于 d3dim/lib。鉴于本文的目的,我主要讨论 D3DApp 和 D3DFrame。

检查用户编写的函数

D3DApp 模块包含类 CD3DApplication。该类在 D3Dapp.h 文件中,为示例程序发布接口,如下所示:

牋牋 // 应用程序创建的可替代的 3D 场景函数 
  virtual HRESULT OneTimeSceneInit()    { return S_OK; }
  virtual HRESULT InitDeviceObjects()   { return S_OK; }
  virtual HRESULT DeleteDeviceObjects() { return S_OK; }
  virtual HRESULT Render()         { return S_OK; }
  virtual HRESULT FrameMove( FLOAT )    { return S_OK; }
  virtual HRESULT RestoreSurfaces()     { return S_OK; }
  virtual HRESULT FinalCleanup()        { return S_OK; }

要使用示例框架创建新的 D3D 应用程序,只要创建新的项目和这些函数的新的实现;让我们为 D3Dframe 示例调用“公共接口”。这正是 D3D SDK 示例所做的。让我们看一看这些函数:

OneTimeSceneInit 允许示例完成一次性初始化任务,例如加载纹理和 x-文件,建立计算数值,生成程序的结构和类似的操作。通常,任何一次性的资源分配应该在这里完成。在每个应用程序执行周期中,OneTimeSceneInit 被调用一次。

InitDeviceObjects 给示例提供了初始化每个设备对象的机会。通常情况下,程序执行诸如将纹理位加载到设备表面、设置矩阵、设置光源以及填充顶点缓冲区等等操作。在初始化第一个设备以及每当设备有变化时,调用 InitDeviceObjects。

DeleteDeviceObjects 包含示例用于删除在 InitDeviceObjects 中创建的对象的代码。这两个函数是成对匹配的;一定要使您的设备专用的资源分配与删除匹配,否则每当设备改变时将泄漏内存。每当设备被取消时调用 DeleteDeviceObjects。

Render 是所有展现发生的地方。在这儿,清除框架缓冲区并调用 BeginScene/EndScene 对之间所有的展现代码。每帧调用 Render 一次。

FrameMove 提供了收集每帧动画任务的简便方法。更新矩阵,纹理调整,对象调整和其他随时间变化的动作都发生在 FrameMove。每帧调用 FrameMove 一次。

RestoreSurfaces 使示例测试丢失的表面并重新恢复它们,使应用程序可以继续执行。在表面因应用程序切换而丢失时,调用 RestoreSurfaces。

FinalCleanup 与 OneTimeSceneInit 配对,并提供一次取消一个应用程序的对象的方法。一定要使清除代码与初始化代码匹配,避免内存泄漏。

D3DFrame 内部

一旦掌握了应用函数的用途后,就该看一看什么东西会使它们准确运行。除了公共接口以外,类 CD3DApplication 有两个值得检查的部分。首先,类 CD3DApplication 包含下列成员函数:

  HRESULT Initialize3DEnvironment();
  HRESULT Change3DEnvironment();
  HRESULT Render3DEnvironment();
  VOID  Cleanup3DEnvironment();

这些函数使用了公共接口和类 CD3DFramework7,来处理 D3D 应用程序的许多工作。

Initialize3DEnvironment 调用 CD3DFramework7->Initialize 来初始化示例框架,然后调用公共接口 InitDeviceObjects 来初始化设备专用对象。构造该代码用于处理在初始化过程中可能发生的错误。

Change3DEnvironment 为应用程序处理驱动程序、设备和/或模式的改变。它调用公共接口 DeleteDeviceObjects 释放旧设备的对象。然后建立新的设备状态,并调用 Initialize3DEnvironment 以创建新设备的环境。

Render3DEnvironment 完成五个重要的任务。首先,它检查合作状态以保证它可以继续展现。接着,它为随时间变化的动画调用公共接口 FrameMove。然后调用公共接口 Render 以完成绘制。如果启动了统计,则进行绘制。最后使用 CD3DFramework7->ShowFrame 显示帧。如果显示帧导致表面丢失情况,则框架和公共接口 RestoreSurfaces 都将被调用。

Cleanup3DEnvironment 调用 DeleteDeviceObjects 和 FinalCleanup 为应用程序结束做准备。

我们不要忘了 D3D 应用程序实际上是 Windows 应用程序。Win32 应用程序的内容核心隐藏在成员函数中:

  virtual HRESULT Create( HINSTANCE, TCHAR* );
  virtual INT   Run();
  virtual LRESULT MsgProc( HWND hWnd, UINT uMsg, 
   WPARAM wParam, LPARAM lParam );

在往下深入讲解之前,让我们看一看当使用 CD3DApplication 时 WinMain 变为什么。在本实例中,WinMain 是这样结束的:

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
{
  CMyD3DApplication d3dApp;

  if( FAILED( d3dApp.Create( hInst, strCmdLine ) ) )
    return 0;

  return d3dApp.Run();

}

这是非常简单的 WinMain。并且隐藏 Create 和 Run 的动机是明确的,因为它们是 Winmain。MsgProc 是 Windows 消息处理程序。在内部,它们都使用 xxx3DEnvironment 函数和类 CD3DFramework7 来管理 D3D 应用程序以及 Windows 应用程序。

Create 使用模块 D3DEnum 提供的对枚举驱动程序、设备的支持,以及当前硬件的模式支持;它还选择一个默认值。然后调用公共接口 OneTimeSceneInit。一旦创建了用户对象,新的 CD3DFramework7 对象将实例化。需要注意一般的 Win32 细节,注册窗口类,然后创建窗口。最后,调用 Initialize3DEvironment 创建新设备的环境。

Run 完成两个重要的任务:Windows 消息循环处理和调用 Render3DEnvironment。Run 也为 WM_QUIT 消息和退出做准备。

MsgProc 是 Windows 消息的消息处理程序。它依赖并使用 xxx3DEvironment 函数和 CD3DFramework7 对象管理 Win32 和 D3D 应用程序。

现在,我已经大体介绍了 CD3DApplication 类的工作方式,以及它如何使用 CD3DFramework7 类,下面再深入研究 CD3DFramework7 和它的内部。

在类 CD3DFramework7 中主要的繁重任务是由下面两组成员函数完成的:

  // 创建框架 
  HRESULT Initialize( HWND hWnd,GUID* pDriverGUID, 
      GUID* pDeviceGUID, DDSURFACEDESC2* pddsd, 
      DWORD dwFlags );
  HRESULT DestroyObjects();

  // 框架类的内部函数
  HRESULT CreateZBuffer( GUID* );
  HRESULT CreateFullscreenBuffers( DDSURFACEDESC2* );
  HRESULT CreateWindowedBuffers();
  HRESULT CreateDirectDraw( GUID*, DWORD );
  HRESULT CreateDirect3D( GUID* );
  HRESULT CreateEnvironment( GUID*, GUID*, DDSURFACEDESC2*,
DWORD );

让我们先看第一组,Initialize 和 DestroyObjects。

Initialize 是创建框架内部对象的公共函数。它在内部建立一些状态,然后依赖 CreateEnvironment 去完成大部分艰难的工作。

DestroyObjects 仅仅释放 Initialize 中创建的所有 DirectX COM 对象。

CreateEnvironment 创建框架的内部对象。它决定设备的内存类型,然后调用 CreateDirectDraw。一旦它们不正常,CreateFullscreenBuffers 或 CreateWindowedBuffers 就会创建前台和后端缓冲区。最后,CreateDirect3D 创建 3-D 设备,并且 CreateZBuffer 创建并连接 Z-缓冲区。

鉴于理解 D3DFrame 的目的,我们不需要了解 CreateDirectDraw、CreateFullscreenBuffers、CreateWindowedBuffers、CreateDirect3D 或 CreateZBuffer 内部的详细实现。它们是直接相关的 — 这一句就够了。而对于那些想了解如何精确实现的人,源代码正等待他们去研究。

类 CD3Dframework7 中值得一提的最后几组函数提供了另外一些对展现的支持。它们是:

  // 帮助展现的函数
  HRESULT RestoreSurfaces();
  HRESULT ShowFrame();
  HRESULT FlipToGDISurface( BOOL bDrawFrame = FALSE ); 
  VOID  Move( INT x, INT y ); 

对于这些内容,我只是粗略带过,因为它们在先前检验的函数中使用,并且它们的用法可以轻松地从上下文导出。

要创建新的示例,现在只须实现一个类,诸如,下面所示的 CMyD3Dapplication:

class CMyD3DApplication : public CD3DApplication
{
protected:
  HRESULT OneTimeSceneInit();
  HRESULT InitDeviceObjects();
  HRESULT DeleteDeviceObjects();
  HRESULT Render();
  HRESULT FrameMove( FLOAT fTimeKey );
  HRESULT FinalCleanup();

  static HRESULT ConfirmDevice( DDCAPS*, D3DDEVICEDESC7* );
public:
  CMyD3DApplication();
}

完成之后,您就拥有一个有效的 D3DFrame 示例了。可以看见它在 D3D SDK 示例中反复出现。或者等下一个专栏。仅提供空实现功能将导致空的 D3D 应用程序。我已经完成它,将作为以后专栏的基础,这里我也提供了源代码。运行在窗口中的空 D3D 应用程序,如图 2 所示。


图 2. D3DFrameApp 示例

结束语

作为下面几部分的难题,请参阅关于下列内容的四篇 DirectX 7.0 Direct3D 文章:

  1. 虚拟光
  2. 两篇关于 Alpha 混合物的文章:
    1. 顶点中的 Alpha
    2. 纹理中的 Alpha
  3. DotProduct3 展现

“虚拟光”一文将说明如何操纵 Direct3D 光,以避开大多数硬件施加的八光限制。Alpha 混合物文章将说明两种不同的透明技术:顶点中的透明和纹理中的透明。DotProduct3 文章将讨论非常好的 DOTPRODUCT3 操作符及其用途(提示,可将 DOTPRODUCT3 视为广义的从矢量到像素的查找函数)。每篇文章都包含一个基于 D3DFrame 的示例。

欢迎您提出反馈!欢迎您通过下面的地址,将您的评论、问题、主题思想或者您对本专栏涉及的主题的不同意见告诉我。不过,请不要期待单独回复或发给我请求支持的问题。请记住,Microsoft 有一个活动邮件的列表,DirectXDev,供志趣相投的开发者作为论坛来共享信息。Web 界面位于 http://DISCUSS.MICROSOFT.COM/archives/DIRECTXDEV.html(英文)。提问之前,请阅读 FAQ,它位于 http://msdn.microsoft.com/library/techart/dxfaq2.htm(英文)。

自适应啸叫抑制算法原理与MATLAB实现:从反馈抵消到陷波器组 在扩声系统中,声反馈引发的正反馈自激振荡是常见难题,啸叫一旦建立便严重影响听感。自适应滤波技术通过实时估计声反馈路径,从源头阻断环路增益,相比传统陷波器与移频器,能够动态适应房间声学环境和设备位置变化,更好地兼顾音质与抑制深度。本文围绕自适应啸叫抑制算法,阐述其数学原理、双滤波器分组结构及基于MATLAB的完整实现流程,涵盖NLMS自适应更新、啸叫频率检测与自适应陷波器组配置。同时介绍收敛时间、稳态残余误差、残余啸叫衰减量等评价指标的量化方法,并结合现场工程中的常见问题给出参数调优与避坑指南,为音频算法开发 阅读详情

相关推荐

DFrame后台框架、ORM、C# ORM

DFrame是一个轻量级ORM框架。它内部集成SQLHelper组件和Dapper框架。 DFrame.Common命名空间集成: 1:EncryptDecrypt(AES/Base64/DES/HmacSha/MD5/SHA/RSA); 2:HttpService 服务类; 3:ImageClass 图片操作; 4:Json json操作; 5:ListComparer 按实体字段去重; 6:Mail 电子邮件操作; 7:QRCode 生成二维码和解读二维码; 8:SMS 短信接口 阿里云; 9:Tools 其他工具包; 10:UserInfo 获取用户信息。 DFrame.DAL命名空间集成: 1:Access 数据库操作类; 2:MySQL 数据库操作类; 3:SQLServer 数据库操作类; 4:生成MySQL数据库方法; 5:生成SQLServer数据库方法; 例如,执行以下代码: Assembly ass = Assembly.Load("Models"); DFrame.DAL.SQLFactory.Create(DFrame.DAL.SQLFactory.DatabaseType.MSSQLServer, "test1", ass); 将会“Models”命名空间下的所有已集成DFrame.Model.DBModel抽象类的实体类,写入到MSSQLServer的"test1"数据库。 实体字段设定: [DFrame.Model.DBField(NotNull = true,DBFieldKey =DFrame.Model.Enums.DBFieldKey.Unique,DefaultValue ="默认",ForeignKey =typeof(Person),Lenght =4001)] public string Text { get; set; } //其中NotNull设定是否可空; //其中DBFieldKey键类型; //其中DefaultValue设定默认值; //其中ForeignKey设定外键; //其中Lenght设定长度; DFrame.Model命名空间: 1:提供DFrame.DAL下的生成数据库用的一些抽象类; 2:命名空间内部已集成简单的SQLHelper操作类。并对继承DFrame.Model.DBModel抽象类的实体提供lambda语句查询方法(目前只支持MSSQLServer数据库)。 lambda查询支持的方法有: 1: long Count() 2: List ToList() 3: int Delete()

[CVPR2019](D3DFR)Accurate 3D Face Reconstruction with Weakly-Supervised Learning From Single Image

亮点:主要是提出了通过同一人多张图来生成更精细的人脸3D模型的方案,主要框架是基于3DMM的。 Lambertian surface-朗伯面:即入射光会向所有方向均匀反射,也即漫反射的期望状态spherical harmonic lighting-球谐光照:就是用来模拟光照的一个方案。类似于傅里叶变换,将一个复杂的函数分解为多个正交的基底函数,通过计算他们的系数来获得最终的结果。主要目的是为了快速模拟复杂的实时光照。monochromatic lights-单色光:即单一频率的光,无法发生色散。对应的是复

wrk226的博客 1406

Directx8.0 sdk的include和lib文件

Directx8.0 sdk的include和lib文件

Alpha 闪烁效果

Philip Taylor 2000年9月 下载本文的源代码 (521 KB) 欢迎阅读 Driving DirectX。这个月,我将通过开发一个使用 alpha 的 Direct3D 屏幕保护程序继续对 alpha 混色进行探索。 图 1. MSDNSparkles 屏幕快照图 1 显示了该示例的一个屏幕快照;要想真正欣赏这些图像,您必须花上一定的时间来观察屏幕保护程序的形态

蝈蝈俊.net 1864

SAP SD跨公司销售IDOC自动记账配置实战指南

本文详细介绍了SAP SD模块中跨公司销售IDOC自动记账的配置实战指南。通过IDOC技术实现集团企业间交易的自动化处理,显著提升财务效率和准确性。文章涵盖前置配置、RFC连接、合作伙伴参数设置及财务科目分配等关键步骤,并提供了常见错误排查和性能优化建议,帮助用户快速掌握这一高效业务流程。

weixin_29284885的博客 769

《深入 UFS Explorer:自定义 RAID 配置指南》

UFS Explorer支持以虚拟模式组装任何受支持的RAID配置,以便后续访问其内容或恢复丢失数据。启动RAID构建器;向RAID构建器主内容区域的列表中添加RAID组件;为不可用组件插入占位符(需当前RAID级别支持且软件兼容);调整组件的准确顺序;在“虚拟RAID配置”区域设置RAID参数;以虚拟模式组装阵列各部分。程序主窗口“存储设备导航面板”中打开的任何存储设备(包括驱动器、逻辑卷、磁盘镜像、虚拟磁盘及其他复杂存储设备)均可作为RAID组件。

melonbo的专栏 1403

【DOS 6.0模块】equip.asm

;************************************************************************ ; * ; Copyright (C) 1991 by Trace Center * ; * ; EQUIP.ASM * ; * ;************************************************************************ TITLE Eq

u25th_engineer的博客 460

华三R4900 G5服务器实战:用PMC P460-B4阵列卡配置RAID1+RAID6,并搞定CentOS 7.9安装(含热备盘设置)

本文详细解析了在华三R4900 G5服务器上使用PMC P460-B4阵列卡配置RAID1+RAID6混合阵列的全过程,包括热备盘设置和CentOS 7.9系统安装。通过实战步骤和性能优化建议,帮助企业IT人员高效部署高可用存储方案,特别适合需要数据冗余和系统稳定性的企业级应用场景。

weixin_29248653的博客 357

DX骨骼动画,地形简单的演示

 给出主文件头文件:Code: //   //D3D主文件类   //作者:CYM   //   #pragma once   #include    #include    #include "D3DFrame.h"   #include "Model.h"  

chengyimingvb的专栏 2229

10BASE-T1S协议中的PLCA机制:实现无碰撞网络传输的关键

本文深入解析了10BASE-T1S协议中的PLCA(物理层冲突避免)机制。作为IEEE 802.3cg标准的关键部分,PLCA通过循环调度与机会传递,从根源上避免了网络碰撞,为工业与汽车等场景提供了确定性的低延迟传输保障,是实现可靠实时通信的核心技术。

weixin_29250403的博客 209

svn 分支(branch)和标签(tag)管理

svn的分支管理

caohongxing的博客 3万+

D3D动画相关接口理解

一、D3DXFRAME接口 这里的frame不是帧keyFrame,而是动画子网格和变换的节点Node 有包含了本节点的静态变换,节点关联的网格容器(一个或多个网格),frame网格节点名字,拓展D3DXFRAME_EX中还包含了 Combined matrix 框架节点中的组合变换(累积变换,包括从原始数据(模型坐标系)TransformationMatrix变换开始), Com

自由理想的足迹 1713

从5V降到3.3V,你的LDO到底有多烫?手把手算功耗、选散热,避开这些坑

本文详细解析了LDO在5V转3.3V电路中的发热问题,提供了精确的功耗计算公式和散热设计方法。通过对比不同封装的热阻参数和优化PCB布局,帮助工程师有效降低LDO温度,避免热保护触发。文章还探讨了替代方案的技术拐点,为电源系统优化设计提供实用指导。

weixin_30304375的博客 435

pandas frame 删除一行_数据处理进阶pandas入门(四)

回顾在数据处理进阶pandas入门(三)中,我们介绍了Series的基本技巧功能,包括Series的索引设置、自动对齐特性以及对Series元素的查看、添加、删除、排序等功能。今天我们开始介绍pandas中另一个重要的数据结构DataFrame。DataFrame简介DataFrame是一个表格型的数据结构,包含一组有序的列,它的值类型可以是数值、字符串、布尔型等各种数据类型。DataFrame中...

weixin_39892309的博客 221

马达种类全解析:VCM、Stepper、Piezo 在手机相机中的驱动原理与工程差异

在现代手机影像系统中,马达承担着核心成像组件的动态调节任务,如自动对焦(AF)、光学防抖(OIS)以及变焦调节。目前主流采用三类驱动器件:VCM(Voice Coil Motor)、Stepper(步进马达)、Piezo(压电马达)。不同马达方案在结构复杂度、响应速度、功耗、驱动方式与模组厚度适配等方面差异显著,对成像系统的性能表现有直接影响。本文将结合最新旗舰设备的应用现状,系统剖析这三类驱动马达的工作原理、架构特点与工程应用经验,为工程实践中选型与调试提供参考。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3778

[Dify实战] OA 公文排版助手:自动格式化、编号、生成摘要-带配套资源

摘要: Dify 公文排版助手通过自动化解决公文处理中的格式混乱、编号错漏等问题。支持标题层级自动编号、摘要生成、要素补全等功能,输出标准化Markdown格式。核心流程包括输入原文、智能识别、自动排版与要素输出,适用于通知、纪要等场景。实施需统一模板规则,规范输入格式,并通过试跑优化纠错率与处理效率。关键价值在于减少人工返工,提升排版一致性,未来可对接OA系统实现全流程自动化。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 471

写一个DX8的屏幕保护程序-------Alpha 闪烁效果

<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog.html" frameborder="0" width="728" scrolling="no" height="90">&lt

70

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

--=== 利用微软网格控件进行编辑输入==--

<iframe align="top" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog01.html" frameborder="0" width="728" scrolling="no" height="90"><

40

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

67、自定义通信帧协议解析

帧标识A 类型 备注A0x0F 长帧 数据长度2字节短帧:帧标识 帧标识取反 帧用户数据字节数 用户数据…用户数据长帧:帧标识 帧标识取反 帧用户数据字节数(高8位) 帧用户数据字节数(低8位) 用户数据…用户数据注意:帧标识符应尽量避免使用0x00/0xFF,因为出现概率过高,容易误识别。

qq_36561846的博客 959

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Efs Frame企业级开发框架源码

Efs Frame企业级开发框架源码  Efs是一套整体的企业级开发解决方案,整个框架体系中包含了Web表现层开发包,组件开发包,基础数据库设计一整套完整的基于B/S架构应用程序设计开发的完整解决方案。 Efs框架从研发到时间,历时近10年,积累了大量实战软件工程专家、数学专家的心血不断完善而成,已应用的大大小小的项目几十个,从小项目的开发管理维护设计到大项目的负载均衡设计,Efs逐渐形成了一整

lovegonghui的专栏 951

Java8的Stream流太难用了?看看JDFrame

????这是一个或许对你有用的社群????一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料:《项目实战(视频)》:从书中学,往事中“练”《互联网高频面试题》:面朝简历学习,春暖花开《架构 x 系统设计》:摧枯拉朽,掌控面试高频场景题《精进 Java 学习指南》:系统学习,互联网主流技术栈《必读 Java 源码专栏》:知其然,知其所以然????这是一个或许...

weixin_44421461的博客 124

Pandas DataFrame创建、增、删、改、查、并操作合集

本文代码在python 3.9.7,pandas 1.3.4下编译通过 文章目录一、Pandas DataFrame的创建1. 基于列表、字典或Numpy数组创建DataFrame2. 基于.xlsx文件或.csv文件读取Dataframe二、Pandas Dataframe 的合并三、Pandas Dataframe 的增删改查等基本操作1.删除行/列2.读入数据 一、Pandas DataFrame的创建 创建DataFrame即由获取的原数据类型(或数据文件)转为DataFrame,情况1是数据已在

MarvinSCI的博客 1579
上一篇: 掌握DirectX和DirectInput——力反馈游戏杆
下一篇: Java中使用DirectDraw
UU码农
博客等级 码龄26年 1粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值