文档章节

Delphi 与 DirectX 之 DelphiX(2): DelphiX 各单元概览

涂孟超
 涂孟超
发布于 2014/09/26 15:32
字数 1411
阅读 4
收藏 0

DXClass | DXDraws | DIB | DXSounds | DXWave | DXPlay | DXSprite | DXInput

DXClass 单元
TControlSubClass
TControlSubClassProc
TCustomDXTimer
TDirectX
TDirectXDriver
TDirectXDrivers
TDXForm
TDXPictureClip
TDXTimer
TDXTimerEvent
THashCollection
THashCollectionItem

TDblPoint

Min(Val1,Val2: Integer): Integer      
PointInRect(const Poin: TPoint; const Rect: TRect): Boolean
RectInRect(const Rect1,Rect2: TRect): Boolean
OverlapRect(const Rect1,Rect2: TRect): Boolean
WideRect(ALeft,ATop,AWidth,AHeight: Integer): TRect
InitCosinTable
Cos256(i: Integer): Double
Sin256(i: Integer): Double
ReleaseCom(out Com)
DXLoadLibrary(const FileName,FuncName: string): TFarProc
FreeLibList
MakeHashCode(const Str: string): Integer
Get2PointRange(a,b: TDblPoint): Double
GetARadFromB(A,B: TDblPoint): Double
Get256(dX,dY: Double): Double
GetPointFromRangeAndAngle(SP: TDblPoint; Range,Angle: Double): TDblPoint
In2DRowCol: T2DRowCol
Trans2DRowCol(x,y: double): T2DRowCol
Scale2DRowCol(x,y: double): T2DRowCol
Rotate2DRowCol(Theta: double): T2DRowCol
Multipl2DRowCol(A,B: T2DRowCol): T2DRowCol
RotateIntoX2DRowCol(x,y: double): T2DRowCol
ScaleAt2DRowCol(x,y,Sx,Sy: double): T2DRowCol
ReflectAcross2DRowCol(x,y,dx,dy: Double): T2DRowCol
RotateAround2DRowCol(x,y,Theta: Double): T2DRowCol
Apply2DVector(V: T2DVector; M: T2DRowCol): T2DVector
DblPoint(a,b: Double): TDblPoint
TruncDblPoint(DblPos: TDblPoint): TPoint
PointInCircl(PPos,CPos: TPoint; R: integer): Boolean
CircleInCirc(C1Pos,C2Pos: TPoint; R1,R2: Integer): Boolean
SegmentInCircle(SPos,EPos,CPos: TPoint; R: Integer): Boolean
Angle256(Angle: Single): Single
CheckNearAThanB(S,A,B: TDblPoint): Boolean
CircumCenter3Pt(const x1,y1,x2,y2,x3,y3: Single; outPx,Py: Singl): Boolean
Distance(const x1,y1,x2,y2: Double): Double
InCenter(const x1,y1,x2,y2,x3,y3: Double; outPx,Py: Double)
PointInTriangl(const Px,Py,x1,y1,x2,y2,x3,y3: Double): Boolean
Log(const Co,FName: string)

T2DRowCol
T2DVector
TCellRange
TControlSubClassProc
TDXTimerEvent

L_Curve = 0
R_Curve = 1
C_Add = 0
C_Dec = 1
PaletteMask = $02000000

CosinTable: array[0..255] of Double
LibList: TStringList
SetAppExStyleCount: Integer

DXDraws 单元
TBlit
TBlitMoveEvent
TCustomDXDraw
TCustomDXImageList
TD2D
TD2DTextureFilter
TD2DTextures
TDirect3DTexture
TDirect3DTexture2
TDirectDraw
TDirectDrawClipper
TDirectDrawOverlay
TDirectDrawPalette
TDirectDrawSurface
TDirectDrawSurfaceCanvas
TDXDraw
TDXDrawDisplay
TDXDrawDisplayMode
TDXDrawDriver
TDXDrawDriverBlt
TDXDrawDriverFlip
TDXDrawNotifyEvent
TDXDrawNotifyType
TDXDrawOption
TDXFont
TDXImageList
TDXPowerFont
TDXPowerFontAfterTextOutEvent
TDXPowerFontBeforeTextOutEvent
TDXPowerFontEffectsParameters
TDXPowerFontTextOutEffect
TDXPowerFontTextOutType
TDXTBase
TDXTextureImage
TDXTextureImageFileBlockHeaderWriter
TDXTextureImageFileCompressType
TDXTextureImageLoadFunc
TDXTextureImageProgressEvent
TDXTextureImageType
TDXTImageChannel
TInitializeDirect3DOption
TOnRender
TOnUpdateTextures
TPictureCollection
TPictureCollectionComponent
TPictureCollectionItem
TPictureCollectionItemPattern
TRenderMirrorFlip
TRenderType
TTextureRec
TTrace
TTracePointsType
TTraces
TWaveType

TBlitRec
TBlurImageProp
TDXTextureImageChannel
TDXTextureImageFileBlockHeader
TDXTextureImageFileBlockHeader_StartGroup
TDXTextureImageFileBlockHeaderWriter_BlockInfo
TDXTextureImageFileHeader
TDXTextureImageHeader_Image_Format
TDXTextureImageHeader_Image_Format_Index
TDXTextureImageHeader_Image_Format_RGB
TDXTextureImageHeader_Image_GroupInfo
TDXTextureImageHeader_Image_PixelData
TDXTextureImageHeader_Image_TransparentColor
TDXTImageChannelInfo
TDXTImageFormat
TPath
TRGB

dxtMakeChannel(Mask: DWORD; indexed: Boolean): TDXTextureImageChannel  
dxtEncodeChannel(const Channel: TDXTextureImageChannel; c: DWORD): DWORD
dxtDecodeChannel(const Channel: TDXTextureImageChannel; c: DWORD): DWORD
dib2dxt(DIBImage: TDIB; out DXTImage: TDXTextureImage)
DXDraw_Draw(...); 
DXDraw_Paint(...); 
DXDraw_Render(...); 
DXDirectDrawEnumerate(lpCallback: TDDEnumCallbackA;  lpContext: Pointer): HRESULT
EnumDirectDrawDrivers:TDirectXDrivers
ClipRect(var DestRect: TRect; const DestRect2: TRect): Boolean
ClipRect2(var DestRect, SrcRect: TRect; const DestRect2, SrcRect2: TRect): Boolean
Conv24to16(Color: Integer): Word
Conv16to24(Color: Word): Integer
GetRGB(Color: cardinal; var R, G, B: Byte)
RGBToBGR(Color: cardinal): cardinal
BPPToDDBD(BPP: DWORD): DWORD
FreeZBufferSurface(Surface: TDirectDrawSurface; var ZBuffer: TDirectDrawSurface)
Direct3DInitializing(...); 
Direct3DInitializing_DXDraw(Options: TInitializeDirect3DOptions;  DXDraw: TCustomDXDraw)
InitializeDirect3D(...); 
InitializeDirect3D7(...); 
TDXDrawRGBQuadsToPaletteEntries(const RGBQuads: TRGBQuads;  AllowPalette256: Boolean): TPaletteEntries
GetWidthBytes(Width, BitCount: Integer): Integer
DXTextureImage_LoadDXTextureImageFunc(Stream: TStream; Image: TDXTextureImage)
DXTextureImage_LoadBitmapFunc(Stream: TStream; Image: TDXTextureImage)
DXTextureImageLoadFuncList:TList
DXTextureImage_SaveDXTextureImageFunc(Stream: TStream; Image: TDXTextureImage)
DXTextureImage_LoadDXTextureImageFunc(Stream: TStream; Image: TDXTextureImage)
DXTextureImage_SaveDXTextureImageFunc(Stream: TStream; Image: TDXTextureImage)
DXTextureImage_LoadBitmapFunc(Stream: TStream; Image: TDXTextureImage)
GetBitCount(b: Integer): Integer
IsNotZero(Z: TRect): Boolean
Mod2f(i: Double; i2: Integer): Double

PByte3
PDXDrawNotifyEvent
PDXTextureImageFileBlockHeaderWriter_BlockInfo
PPathArr
PRGB
PTextureArr
PTextureRec
TBlitMoveEvent
TBlurImageArr
TByte3
TD2D4Vertex
TD2DTextureFilter
TDirectDrawDisplay
TDirectDrawDisplayMode
TDXDrawNotifyEvent
TDXDrawNotifyType
TDXDrawOption
TDXDrawOptions
TDXPowerFontAfterTextOutEvent
TDXPowerFontBeforeTextOutEvent
TDXPowerFontTextOutEffect
TDXPowerFontTextOutType
TDXTextureImageFileCompressType
TDXTextureImageLoadFunc
TDXTextureImageProgressEvent
TDXTextureImageType
TDXTextureImage_PaletteEntries
TDXTImageChannel
TDXTImageChannels
TInitializeDire3DOption
TInitializeDire3DOptions
TOnRender
TOnUpdateTextures
TPathArr
TRenderMirrorFlip
TRenderMirrorFlipSet
TRenderType
TTextureArr
TTracePointsType
TWaveType

maxTexBlock = 2048  
maxVideoBlockSize = 2048
DXTextureImageGroupType_Normal = 0
DXTextureImageGroupType_Mipmap = 1
Alphabet =  ???
PowerAlphabet = ???
ccDefaultSpecular = $FFFFFFFF
ZeroRect:TRect = (Left: 0; Top: 0; Right: 0; Bottom: 0)
DDPF_PALETTEINDEXED = ...; 
Mask1:array[0..7] of DWORD = (1, 2, 4, 8, 16, 32, 64, 128)
Mask2:array[0..3] of DWORD = (3, 12, 48, 192)
Mask4:array[0..1] of DWORD = ($0F, $F0)
Shift1:array[0..7] of DWORD = (0, 1, 2, 3, 4, 5, 6, 7)
Shift2:array[0..3] of DWORD = (0, 2, 4, 6)
Shift4:array[0..1] of DWORD = (0, 4)
DXTextureImageFile_Type = 'dxt:'
DXTextureImageFile_Version = $100
DXTextureImageCompress_None = 0
DXTextureImageCompress_ZLIB = 1
DXTextureImageFileCategoryType_Image = $100
DXTextureImageFileBlockID_EndFile = 0
DXTextureImageFileBlockID_EndGroup = 1
DXTextureImageFileBlockID_StartGroup = 2
DXTextureImageFileBlockID_Image_Format = DXTextureImageFileCategoryType_Image + 1
DXTextureImageFileBlockID_Image_PixelData = DXTextureImageFileCategoryType_Image + 2
DXTextureImageFileBlockID_Image_GroupInfo = DXTextureImageFileCategoryType_Image + 3
DXTextureImageFileBlockID_Image_Name = DXTextureImageFileCategoryType_Image + 4
DXTextureImageFileBlockID_Image_TransparentColor = DXTextureImageFileCategoryType_Image + 5
SurfaceDivWidth = maxVideoBlockSize
SurfaceDivHeight = maxVideoBlockSize

DirectDrawDrivers: TDirectXDrivers 
D2D: TD2D = nil  
RenderError: boolean = false
_DXTextureImageLoadFuncList: TList

DIB 单元
TColorLinePixelGeometry
TColorLineStyle
TCustomDXDIB
TCustomDXPaintBox
TDIB
TDIBitmap
TDIBSharedImage
TDistortType
TDXDIB
TDXPaintBox
TFilterMode
TFilterTypeResample
TGlobalMemoryStream
TPaletteItem
TPaletteManager

TBGR
TDIBPixelFormat
TLightSource
TLocalDIBPixelFormat

MakeDIBPixelFormat(RBitCount, GBitCount, BBitCount: Integer): TDIBPixelFormat
MakeDIBPixelFormatMask(RBitMask, GBitMask, BBitMask: Integer): TDIBPixelFormat
pfRGB(const PixelFormat: TDIBPixelFormat; R, G, B: Byte): DWORD
pfGetRGB(const PixelFormat: TDIBPixelFormat; Color: DWORD; var R, G, B: Byte)
pfGetRValue(const PixelFormat: TDIBPixelFormat; Color: DWORD): Byte
pfGetGValue(const PixelFormat: TDIBPixelFormat; Color: DWORD): Byte
pfGetBValue(const PixelFormat: TDIBPixelFormat; Color: DWORD): Byte
GreyscaleColorTable:TRGBQuads
RGBQuad(R, G, B: Byte): TRGBQuad
PaletteEntryToRGBQuad(const Entry: TPaletteEntry): TRGBQuad
PaletteEntriesToRGBQuads(const Entries: TPaletteEntries): TRGBQuads
RGBQuadToPaletteEntry(const RGBQuad: TRGBQuad): TPaletteEntry
RGBQuadsToPaletteEntries(const RGBQuads: TRGBQuads): TPaletteEntries
PosValue(Value: Integer): Integer
DSin(const C: TOC): Single
DCos(const C: TOC): Single
GetScale(SourceWidth, SourceHeight, TargetWidth, TargetHeight: Integer): Single
MakeDib(out DIB: TDIB; const iWidth, iHeight, iBitCount: Integer; iFillColor: TColor{$IFDEF VER4UP} = clBlack{$ENDIF})
MakeDIB2(out DIB: TDIB; iBitmap: TBitmap)
PaletteManager:TPaletteManager
EmptyDIBImage:TDIBSharedImage
IntToByte(i: Integer): Byte
TrimInt(i, Min, Max: Integer): Integer

PArrayBGR
PArrayByte
PArrayDWord
PArrayWord
PBGR
PBytes
PLines
PLocalDIBPixelFormat
PPBytes
PRGBA
PRGBQuads
TArrayBGR
TArrayByte
TArrayDWord
TArrayWord
TBytes
TColorLinePixelGeometry
TColorLineStyle
TDistortType
TFilter
TFilterMode
TFilterTypeResample
TLightArray
TLines
TMatrixSetting
TOC
TPaletteEntries
TPBytes
TRGBA
TRGBQuads

DefaultFilterRadius: array[TFilterTypeResample] of Single = (0.5, 1, 1, 1.5, 2, 3, 2)
EdgeFilter: TFilter = ((-1, -1, -1), (-1, 8, -1), (-1, -1, -1))
StrongOutlineFilter: TFilter = ((-100, 0, 0), (0, 0, 0), (0, 0, 100))
Enhance3DFilter: TFilter = ((-100, 5, 5), (5, 5, 5), (5, 5, 100))
LinearFilter: TFilter = ((-40, -40, -40), (-40, 255, -40), (-40, -40, -40))
GranularFilter: TFilter = ((-20, 5, 20), (5, -10, 5), (100, 5, -100))
SharpFilter: TFilter = ((-2, -2, -2), (-2, 20, -2), (-2, -2, -2))
msEmboss: TMatrixSetting = (-1, -1, 0, -1, 6, 1, 0, 1, 1, 6)
msHardEmboss: TMatrixSetting = (-4, -2, -1, -2, 10, 2, -1, 2, 4, 8)
msBlur: TMatrixSetting = (1, 2, 1, 2, 4, 2, 1, 2, 1, 16)
msSharpen: TMatrixSetting = (-1, -1, -1, -1, 15, -1, -1, -1, -1, 7)
msEdgeDetect: TMatrixSetting = (-1, -1, -1, -1, 8, -1, -1, -1, -1, 1)
Mask1: array[0..7] of DWORD = ($80, $40, $20, $10, $08, $04, $02, $01)
Mask  1 n: array  [ 0.. 7 ]  of DWORD = ...
Mask4: array[0..1] of DWORD = ($F0, $0F)
Mask4n: array[0..1] of DWORD = ($FFFFFF0F, $FFFFFFF0)
Shift1: array[0..7] of DWORD = (7, 6, 5, 4, 3, 2, 1, 0)
Shift4: array[0..1] of DWORD = (4, 0)
BitmapFileType = Ord('B') + Ord('M') * $100

FPaletteManager: TPaletteManager
FEmptyDIBImage: TDIBSharedImage

DXSounds 单元
TAudioFileStream
TAudioStream
TAudioStreamNotify
TCustomDXSound
TCustomDXWaveList
TDirectSound
TDirectSoundBuffer
TDXMusic
TDXSound
TDXSoundDirectSound
TDXSoundNotifyEvent
TDXSoundNotifyType
TDXSoundOption
TDXWaveList
TMidiCollectionComponent
TMusicDataProp
TMusicListCollection
TMusicListCollectionItem
TSoundCaptureFormat
TSoundCaptureFormats
TSoundCaptureStream
TSoundCaptureStreamNotify
TSoundEngine
TWaveCollection
TWaveCollectionComponent
TWaveCollectionItem

TMidiDataHeader

DXDirectSoundCreate(lpGUID: PGUID; out lpDS: IDirectSound; pUnkOuter: IUnknown): HRESULT
DXDirectSoundEnumerate(lpCallback: TDSEnumCallbackA;  lpContext: Pointer): HRESULT
DXDirectSoundCaptureCreate(lpGUID: PGUID; out lplpDSC: IDirectSoundCapture;  pUnkOuter: IUnknown): HRESULT
DXDirectSoundCaptureEnumerate(lpCallback: TDSEnumCallbackA;  lpContext: Pointer): HRESULT
EnumDirectSoundDrivers_DSENUMCALLBACK(...): BOOL
EnumDirectSoundDrivers: TDirectXDrivers
EnumDirectSoundCaptureDrivers: TDirectXDrivers

PDXSoundNotifyEvent
TDXSoundNotifyEvent
TDXSoundNotifyType
TDXSoundOption
TDXSoundOptions

dm_OK = 0
DSBCAPS_CTRLDEFAULT = DSBCAPS_CTRLFREQUENCY or DSBCAPS_CTRLPAN or DSBCAPS_CTRLVOLUME

DirectSoundDrivers: TDirectXDrivers
DirectSoundCaptureDrivers: TDirectXDrivers

DXWave 单元
TCustomDXWave
TCustomWaveStream
TCustomWaveStream2
TDXWave
TWave
TWaveFileStream
TWaveObjectStream
TWaveStream

TWaveChunkHeader
TWaveFileHeader

MakePCMWaveFormatEx(var Format: TWaveFormatEx; SamplesPerSec, BitsPerSample, Channels: Integer)

WavePoolSize = 8096
ID_RIFF = Ord('R') + Ord('I')*$100 + Ord('F')*$10000 + Ord('F')*$1000000
ID_WAVE = Ord('W') + Ord('A')*$100 + Ord('V')*$10000 + Ord('E')*$1000000
ID_FMT = Ord('f') + Ord('m')*$100 + Ord('t')*$10000 + Ord(' ')*$1000000
ID_FACT = Ord('f') + Ord('a')*$100 + Ord('c')*$10000 + Ord('t')*$1000000
ID_DATA = Ord('d') + Ord('a')*$100 + Ord('t')*$10000 + Ord('a')*$1000000

DXPlay 单元
TCustomDXPlay
TDXPlay
TDXPlayEvent
TDXPlayMessageEvent
TDXPlayModemSetting
TDXPlayPlayer
TDXPlayPlayers
TDXPlayRecvThread
TDXPlaySendCompleteEvent
TDXPlaySendCompleteResult
TDXPlayTCPIPSetting

DXPlayMessageType(P: Pointer): DWORD
DXPlayStringToGUID(const S: string): TGUID
DXDirectPlayCreate(...): HRESULT
GUIDToString(const ClassID: TGUID): string
DXDirectPlayEnumerate(lpEnumDPCallback: TDPEnumDPCallbackW; lpContext: Pointer): HRESULT
DXDirectPlayLobbyCreate(...): HRESULT

TDXPlayEvent
TDXPlayMessageEvent
TDXPlaySendCompleteEvent
TDXPlaySendCompleteResult

DXSprite 单元
TBackgroundSprite
TCollisionEvent
TCustomDXSpriteEngine
TDrawEvent
TDXSpriteEngine
TGetImage
TImageSprite
TImageSpriteEx
TMoveEvent
TSCFinalize
TSCInitialize
TSprite
TSpriteClass
TSpriteCollection
TSpriteCollectionItem
TSpriteEngine
TSpriteType

TMapDataHeader
TMapType

Mod2(i,i2: Integer): Integer
Mod2f(i: Double; i2: Integer): Double

SSpriteNotFound = 'Sprite not found'
SSpriteDuplicateName = 'Item duplicate name "%s" error'

DXInput 单元
TCustomDXInput
TCustomInput
TDXInput
TDXInputState
TForceFeedbackEffect
TForceFeedbackEffectComponent
TForceFeedbackEffectItem
TForceFeedbackEffectObject
TForceFeedbackEffects
TForceFeedbackEffectType
TJoystick
TKeyboard
TMouse

DefKeyAssign: TKeyAssignList
DefKeyAssign2_1: TKeyAssignList
DefKeyAssign2_2: TKeyAssignList
AssignKey(var KeyAssignList: TKeyAssignList; State: TDXInputState; const Keys: array of Integer)
ConvertTime(i: Integer): DWORD
SetDWORDProperty(pdev: IDirectInputDevice; guidProperty: PGUID; dwObject, dwHow, dwValue: DWORD): HResult
SetRangeProperty(pdev: IDirectInputDevice; guidProperty: PGUID; dwObject, dwHow, Value: DWORD): HResult
TJoystick_EnumJoysticksCallback(const lpddi: TDIDeviceInstanceA; pvRef: Pointer): HRESULT
InitDirectInput(out DI: IDirectInput)
FinDirectInput(var DI: IDirectInput)

PKeyAssign
TDXInputState
TDXInputStates
TForceFeedbackEffectType
TKeyAssign
TKeyAssignList

FDirectInput: IDirectInput
FDirectInputCount: Integer

本文转载自:http://www.cnblogs.com/del/archive/2009/01/09/1372452.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
开源游戏框架(转至wiki)

免费和开源引擎,转载自维基 Agar - 一个高级图形应用程序框架,用于2D和3D游戏。 Allegro - 基于 C/C++ 的游戏引擎,支持图形,声音,输入,游戏时钟,浮点,压缩文件以及GUI。 Axiom 引擎 ...

Matrix4X4
2012/04/17
1K
0
Delphi调用 C# 写的webservice

Delphi调用 C# webservice总结 用delphi的THTTPRIO控件调用了c#写的webservice。 下面是我调试时遇到的一些问题: 1:导入wsdl文件:file--new----other----webservice---WSDLimporter---输入...

vga
2014/11/25
0
0
Delphi 的编译指令(2): 条件语句的更多用法

$IFDEF 等同于 $IF DEFINED(...) : 它们的结束分别是: $ENDIF、$IFEND; 例子中的 VER200 是 Delphi 2009 的标识. begin {$IFDEF VER200} ShowMessage('这是 Delphi 2009'); {$ENDIF} {$IF D......

geek_loser
2015/01/29
0
0
Delphi项目构成之单元文件PAS

Delphi项目构成之单元文件PAS 单元文件是Pascal源文件,扩展名为.pas。 有三种类型的单元文件: 窗体/数据模块和框架的单元文件(form/data module and frame units),一般由Delphi自动生成...

KavenSu
2014/01/14
0
0
怎样在DELPHI中使用API函数

实际上,在DELPHI中调用WIN32API函数与在C或C++中调用WIN32 API函数没有大的区别。DELPHI中将C或C++中引用的WINDOWS.H头文件改写为WINDOWS.PAS单元,使WINDOWSAPI函数的定义符合PASCAL语法。...

金笛子
2015/12/02
15
0

没有更多内容

加载失败,请刷新页面

加载更多

【JAVA基础☞内部存储和GC】Java方法区和永久代

Java方法区和永久代 这里只讨论HotSpot虚拟机,这也是目前使用的最多的JVM。Sun JDK7 HotSpot虚拟机的内存模型如下图所示: 1、什么是方法区 在Java虚拟机中,方法区是可供各线程共享的运行时...

卯金刀GG
8分钟前
1
0
Spring Boot Actuator

编者注 由于开发一个对性能要求很强的后台应用,突然发现部署到aliyun发生问题,而普通笔记本没有任何问题,则需要持续一段时间的监控定位函数执行时间,分析过程,并添加健康检查的可视化内...

抢小孩糖吃
9分钟前
1
0
Zabbix监控ActiveMQ

当我们在线上使用了ActiveMQ 后,我们需要对一些参数进行监控,比如 消息是否有阻塞,哪个消息队列阻塞了,总的消息数是多少等等。下面我们就通过 Zabbix 结合 Python 脚本来实现对 ActiveMQ...

SEOwhywhy
21分钟前
2
0
非webpack require.js + vue + vueRouter + iView 实现按需加载

适合一个人开发的时候,在整个php框架下,又想单页,又可以直接后端assign变量穿透到模板。又不想写接口搞前后分离脚手架一大堆npm 包, 在php模板下 引入require.js <!DOCTYPE html><html...

一箭落旄头
36分钟前
7
0
新特性解读 | MySQL 8.0 窗口函数详解

原创作者: 杨涛涛 背景 一直以来,MySQL 只有针对聚合函数的汇总类功能,比如MAX, AVG 等,没有从 SQL 层针对聚合类每组展开处理的功能。不过 MySQL 开放了 UDF 接口,可以用 C 来自己写UDF...

爱可生
42分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部