水波紋演算法
1. 求一個能實現屏幕水波紋效果的vb代碼
'補模塊3文件。一個放不下。
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' 渲染子程序,將新的幀數據渲染到 lpDIBitsRender 中
' 演算法:
' posx = Wave1(x-1,y)-Wave1(x+1,y)+x
' posy = Wave1(x,y-1)-Wave1(x,y+1)+y
' SourceBmp(x,y) = DestBmp(posx,posy)
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Public Sub WaveRender(lpWaveObject As WAVE_OBJECT)
Dim dwPosX As Long, dwPosY As Long, dwPtrSource As Long, dwPtrDest As Long, dwFlag As Long
Dim lpWave1 As Long, LineIdx As Long, LinePtr As Long
Dim lpDIBitsSource As Long, lpDIBitsRender As Long
Dim I As Long, J As Long
dwFlag = 0
With lpWaveObject
'Debug.Print "WaveRender " & .dwFlag
If (.dwFlag And F_WO_ACTIVE) = 0 Then Exit Sub
.dwFlag = .dwFlag Or F_WO_NEED_UPDATE
lpWave1 = .lpWave1
LineIdx = .dwWaveByteWidth '像素指針
For I = 1 To .dwBmpHeight - 2
For J = 0 To .dwBmpWidth - 1
'********************************************************************
' PosY=i+像素上1能量-像素下1能量
' PosX=j+像素左1能量-像素右1能量
'********************************************************************
'LineIdx = LineIdx - .dwWaveByteWidth
LinePtr = lpWave1 + LineIdx - .dwWaveByteWidth
pLongPtr(0) = LinePtr
dwPosY = pLong(0)
LinePtr = lpWave1 + LineIdx + .dwWaveByteWidth
pLongPtr(0) = LinePtr
dwPosY = dwPosY - pLong(0) + I
LinePtr = lpWave1 + LineIdx - 4
pLongPtr(0) = LinePtr
dwPosX = pLong(0)
LinePtr = lpWave1 + LineIdx + 4
pLongPtr(0) = LinePtr
dwPosX = dwPosX - pLong(0) + J
If dwPosX < 0 Or dwPosY < 0 Then GoTo Continue
If dwPosX >= .dwBmpWidth Or dwPosY >= .dwBmpHeight Then GoTo Continue
'********************************************************************
' ptrSource = dwPosY * dwDIByteWidth + dwPosX * 3
' ptrDest = i * dwDIByteWidth + j * 3
'********************************************************************
'dwPtrSource = dwPosY * .dwDIByteWidth + (dwPosX + dwPosX * 2)
dwPosX = dwPosX + dwPosX * 2 'dwPosX * 3
dwPtrSource = dwPosY * .dwDIByteWidth + dwPosX
dwPtrDest = I * .dwDIByteWidth + (J + J * 2) 'dwPtrDest = I * .dwDIByteWidth + J * 3
'********************************************************************
' 渲染像素 [ptrDest] = 原始像素 [ptrSource]
'********************************************************************
lpDIBitsSource = .lpDIBitsSource + dwPtrSource
lpDIBitsRender = .lpDIBitsRender + dwPtrDest
If dwPtrSource <> dwPtrDest Then
dwFlag = dwFlag Or 1 '如果存在源像素和目標像素不同,則表示還在活動狀態
' Debug.Print dwPtrSource & " SR " & dwPtrDest
'CopyMemory ByVal lpDIBitsRender, ByVal lpDIBitsSource, 3
Call WaveGetPixel(lpDIBitsSource, lpDIBitsRender, .dwDIByteWidth)
Else
CopyMemory ByVal lpDIBitsRender, ByVal lpDIBitsSource, 3
End If
'********************************************************************
' 繼續循環
'********************************************************************
Continue:
LineIdx = LineIdx + 4 '像素++ '指針4個位元組
Next 'J
Next 'I
SetDIBits .hDcRender, .hBmpRender, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS
If dwFlag = 0 Then .dwFlag = .dwFlag And (Not F_WO_ACTIVE)
'Debug.Print "WaveRender " & .dwFlag
End With
End Sub
Public Sub WaveUpdateFrame(lpWaveObject As WAVE_OBJECT, ByVal hdc As Long, bIfForce As Boolean)
'Dim ret As Long
With lpWaveObject
If bIfForce = True Then GoTo labUpdate
If (.dwFlag And F_WO_NEED_UPDATE) Then
'ret = SetDIBitsToDevice(.hDcRender, 0, 0, .dwBmpWidth, .dwBmpHeight, 0, 0, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS)
'ret = SetDIBits(.hDcRender, .hBmpRender, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS)
'SetDIBits .hDcRender, .hBmpRender, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS
labUpdate:
BitBlt hdc, 0, 0, .dwBmpWidth, .dwBmpHeight, .hDcRender, 0, 0, SRCCOPY
.dwFlag = .dwFlag And (Not F_WO_NEED_UPDATE)
End If
End With
End Sub
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' 扔一塊石頭
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Public Sub WaveDropStone(lpWaveObject As WAVE_OBJECT, ByVal dwPosX As Long, ByVal dwPosY As Long, ByVal dwStoneSize As Long, ByVal dwStoneWeight As Long)
Dim dwSize As Long
Dim dwX1 As Long, dwX2 As Long
Dim dwY1 As Long, dwY2 As Long, dwY3 As Long
'Dim dwMaxX As Long, dwMaxY As Long
Dim LinePtr As Long
With lpWaveObject
'Debug.Print "WaveDropStone " & .dwFlag
'********************************************************************
' 計算范圍
'********************************************************************
dwSize = dwStoneSize \ &H2 '2 ^ 1
dwX1 = dwPosX + dwSize
dwX2 = dwPosX - dwSize
If (.dwFlag And F_WO_ELLIPSE) Then dwSize = dwSize \ &H2 ' 2 ^ 1
dwY1 = dwPosY + dwSize
dwY2 = dwPosY - dwSize
dwSize = dwStoneSize
If dwSize = 0 Then dwSize = dwSize + 1
'********************************************************************
' 判斷范圍的合法性
'********************************************************************
If dwX1 + 1 >= .dwBmpWidth Or dwX2 < 1 Or dwY1 + 1 >= .dwBmpHeight Or dwY2 < 1 Then Exit Sub
'********************************************************************
' 將范圍內的點的能量置為 dwStoneWeight
'********************************************************************
While dwX2 <= dwX1
dwY3 = dwY2
While dwY3 <= dwY1
'(x-x0)^2+(y-y0)^2<=r^2 就在圓內
If (dwX2 - dwPosX) * (dwX2 - dwPosX) + (dwY3 - dwPosY) * (dwY3 - dwPosY) <= dwSize * dwSize Then
LinePtr = .lpWave1 + (dwY3 * .dwBmpWidth + dwX2) * &H4 '2 ^ 2
pLongPtr(0) = LinePtr
pLong(0) = dwStoneWeight
End If
dwY3 = dwY3 + 1
Wend
dwX2 = dwX2 + 1
Wend
.dwFlag = .dwFlag Or F_WO_ACTIVE
End With
End Sub
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' 計算擴散數據、渲染點陣圖、更新窗口、處理特效的定時器過程
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Public Sub WaveTimerProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
Dim hdc As Long
Dim dwPosX As Long, dwPosY As Long, dwSize As Long, dwWeight As Long
Dim lpWaveObj As Long
'建立模擬指針
Dim pWAVE_OBJECT() As WAVE_OBJECT
Dim pWAVE_OBJECTPtr() As Long
Dim SApWAVE_OBJECT As SAFEARRAY1D
Dim SApWAVE_OBJECTPtr As SAFEARRAY1D
With SApWAVE_OBJECT
.cDims = 1
.fFeatures = 0
.cbElements = 1
.cLocks = 0
.pvData = 0
.Bounds(0).lLbound = 0
.Bounds(0).cElements = 1
End With
With SApWAVE_OBJECTPtr
.cDims = 1
.fFeatures = 0
.cbElements = 4
.cLocks = 0
.pvData = VarPtr(SApWAVE_OBJECT.pvData)
.Bounds(0).lLbound = 0
.Bounds(0).cElements = 1
End With
CopyMemory ByVal VarPtrArray(pWAVE_OBJECT), VarPtr(SApWAVE_OBJECT), 4
CopyMemory ByVal VarPtrArray(pWAVE_OBJECTPtr), VarPtr(SApWAVE_OBJECTPtr), 4
lpWaveObj = idEvent
pWAVE_OBJECTPtr(0) = lpWaveObj
'Debug.Print "WaveTimerProc " & pWAVE_OBJECT(0).dwFlag
Call WaveSpread(pWAVE_OBJECT(0))
Call WaveRender(pWAVE_OBJECT(0))
With pWAVE_OBJECT(0)
If (.dwFlag And F_WO_NEED_UPDATE) Then
hdc = GetDC(.hWnd)
Call WaveUpdateFrame(pWAVE_OBJECT(0), hdc, False)
Call ReleaseDC(.hWnd, hdc)
End If
'********************************************************************
' 特效處理
'********************************************************************
If (.dwFlag And F_WO_EFFECT) = 0 Then Exit Sub
Select Case .dwEffectType
'********************************************************************
' Type = 1 雨點,Param1=速度(0最快,越大越慢),Param2=雨點大小,Param3=能量
'********************************************************************
Case 1
'Dim ret As Long
If .dwEffectParam1 > 0 Then Call WaveRandom(pWAVE_OBJECT(0), .dwEffectParam1) 'ret = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam1)
'If ret = 0 Then
dwPosX = WaveRandom(pWAVE_OBJECT(0), .dwBmpWidth - 2) + 1
dwPosY = WaveRandom(pWAVE_OBJECT(0), .dwBmpHeight - 2) + 1
dwSize = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam2) + 1
dwWeight = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam3) + 50
Call WaveDropStone(pWAVE_OBJECT(0), dwPosX, dwPosY, dwSize, dwWeight)
'End If
'********************************************************************
' Type = 2 行船,Param1=速度(0最快,越大越快),Param2=大小,Param3=能量
'********************************************************************
Case 2
.dwEff2Flip = .dwEff2Flip + 1
If (.dwEff2Flip And 1) <> 0 Then Exit Sub
dwPosX = .dwEff2X + .dwEff2XAdd
dwPosY = .dwEff2Y + .dwEff2YAdd
If dwPosX < 1 Then
dwPosX = -(dwPosX - 1)
.dwEff2XAdd = -.dwEff2XAdd
End If
If dwPosY < 1 Then
dwPosY = -(dwPosY - 1)
.dwEff2YAdd = -.dwEff2YAdd
End If
If dwPosX > .dwBmpWidth - 1 Then
dwPosX = (.dwBmpWidth - 1) - (dwPosX - (.dwBmpWidth - 1)) '(.dwBmpWidth - 1)*2 -dwPosX
.dwEff2XAdd = -.dwEff2XAdd
End If
If dwPosY > .dwBmpHeight - 1 Then
dwPosY = (.dwBmpHeight - 1) - (dwPosY - (.dwBmpHeight - 1)) '(.dwBmpHeight-1)*2-dwPosY
.dwEff2YAdd = -.dwEff2YAdd
End If
.dwEff2X = dwPosX
.dwEff2Y = dwPosY
Call WaveDropStone(pWAVE_OBJECT(0), dwPosX, dwPosY, .dwEffectParam2, .dwEffectParam3)
'********************************************************************
' Type = 3 波浪,Param1=密度,Param2=大小,Param3=能量
'********************************************************************
Case 3
Dim I As Long
For I = 0 To .dwEffectParam1
dwPosX = WaveRandom(pWAVE_OBJECT(0), .dwBmpWidth - 2) + 1
dwPosY = WaveRandom(pWAVE_OBJECT(0), .dwBmpHeight - 2) + 1
dwSize = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam2) + 1
dwWeight = WaveRandom(pWAVE_OBJECT(0), .dwEffectParam3)
Call WaveDropStone(pWAVE_OBJECT(0), dwPosX, dwPosY, dwSize, dwWeight)
Next
End Select
End With
'取消模擬指針
CopyMemory ByVal VarPtrArray(pWAVE_OBJECT), 0&, 4
CopyMemory ByVal VarPtrArray(pWAVE_OBJECTPtr), 0&, 4
End Sub
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'釋放對象
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Public Sub WaveFree(lpWaveObject As WAVE_OBJECT)
With lpWaveObject
If .hDcRender > 0 Then DeleteDC (.hDcRender)
If .hBmpRender > 0 Then DeleteObject .hBmpRender
If .lpDIBitsSource > 0 Then GlobalFree .lpDIBitsSource
If .lpDIBitsRender > 0 Then GlobalFree .lpDIBitsRender
If .lpWave1 > 0 Then GlobalFree .lpWave1
If .lpWave2 > 0 Then GlobalFree .lpWave2
KillTimer .hWnd, VarPtr(lpWaveObject)
ZeroMemory ByVal VarPtr(lpWaveObject), Len(lpWaveObject)
'-----------------------------------------------------------
'取消模擬指針
CopyMemory ByVal VarPtrArray(pLong), 0&, 4
CopyMemory ByVal VarPtrArray(pLongPtr), 0&, 4
'-----------------------------------------------------------------
'取消模擬指針
CopyMemory ByVal VarPtrArray(pByte), 0&, 4
CopyMemory ByVal VarPtrArray(pBytePtr), 0&, 4
'-----------------------------------------------------------
End With
End Sub
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' 初始化對象
' 參數:_lpWaveObject = 指向 WAVE_OBJECT結構體
' 返回:0 成功、 1 失敗
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Public Function WaveInit(lpWaveObject As WAVE_OBJECT, ByVal hWnd As Long, ByVal hBmp As Long, ByVal dwSpeed As Long, ByVal dwType As WaveType) As Long
Dim stBmp As BITMAP
Dim dwReturn As Long
Dim ret As Long
Dim hdc As Long
Dim hMDC As Long
'-----------------------------------------------------------------
'建立模擬指針
With SApLong
.cDims = 1
.fFeatures = 0
.cbElements = 1
.cLocks = 0
.pvData = 0
.Bounds(0).lLbound = 0
.Bounds(0).cElements = 1
End With
With SApLongPtr
.cDims = 1
.fFeatures = 0
.cbElements = 4
.cLocks = 0
.pvData = VarPtr(SApLong.pvData)
.Bounds(0).lLbound = 0
.Bounds(0).cElements = 1
End With
CopyMemory ByVal VarPtrArray(pLong), VarPtr(SApLong), 4
CopyMemory ByVal VarPtrArray(pLongPtr), VarPtr(SApLongPtr), 4
'-----------------------------------------------------------------
'建立模擬指針
With SApByte
.cDims = 1
.fFeatures = 0
.cbElements = 1
.cLocks = 0
.pvData = 0
.Bounds(0).lLbound = 0
.Bounds(0).cElements = 3
End With
With SApBytePtr
.cDims = 1
.fFeatures = 0
.cbElements = 4
.cLocks = 0
.pvData = VarPtr(SApByte.pvData)
.Bounds(0).lLbound = 0
.Bounds(0).cElements = 1
End With
CopyMemory ByVal VarPtrArray(pByte), VarPtr(SApByte), 4
CopyMemory ByVal VarPtrArray(pBytePtr), VarPtr(SApBytePtr), 4
'-----------------------------------------------------------------
dwReturn = 0
ZeroMemory ByVal VarPtr(lpWaveObject), Len(lpWaveObject)
'ZeroMemory lpWaveObject, &H84 ' Len(WAVE_OBJECT)
With lpWaveObject
If dwType = sEllipse Then
.dwFlag = .dwFlag Or F_WO_ELLIPSE
End If
'********************************************************************
' 獲取點陣圖尺寸
'********************************************************************
.hWnd = hWnd
.dwRandom = GetTickCount()
ret = GetObject(hBmp, Len(stBmp), stBmp)
If ret = 0 Then
dwReturn = 1
GoTo result
End If
.dwBmpHeight = stBmp.bmHeight
'if lpWaveObject.dwBmpHeight < 3 then dwReturn = 1:GoTo result
.dwBmpWidth = stBmp.bmWidth
'if lpWaveObject.dwBmpWidth < 3 then dwReturn = 1:GoTo result
.dwWaveByteWidth = stBmp.bmWidth * &H4 '2 ^ 2 'dwBmpWidth * 4
.dwDIByteWidth = (stBmp.bmWidth + stBmp.bmWidth * 2 + 3) And (Not &H3&) '(dwBmpWidth * 3 + 3) and ~3 ' ((W * 3& + 3&) And (Not 3&))
'********************************************************************
' 創建用於渲染的點陣圖
'********************************************************************
hdc = GetDC(hWnd)
.hDcRender = CreateCompatibleDC(hdc)
.hBmpRender = CreateCompatibleBitmap(hdc, .dwBmpWidth, .dwBmpHeight)
'MsgBox .hBmpRender
SelectObject .hDcRender, .hBmpRender
'********************************************************************
' 分配波能緩沖區
'********************************************************************
.lpWave1 = GlobalAlloc(GPTR, .dwWaveByteWidth * .dwBmpHeight)
.lpWave2 = GlobalAlloc(GPTR, .dwWaveByteWidth * .dwBmpHeight)
'********************************************************************
' 分配像素緩沖區
'********************************************************************
.lpDIBitsSource = GlobalAlloc(GPTR, .dwDIByteWidth * .dwBmpHeight)
.lpDIBitsRender = GlobalAlloc(GPTR, .dwDIByteWidth * .dwBmpHeight)
'********************************************************************
' 獲取原始像素數據
'********************************************************************
'With .stBmpInfo.bmiHeader
.stBmpInfo.bmiHeader.biSize = Len(.stBmpInfo.bmiHeader) ' &H28 'len(BITMAPINFOHEADER)
.stBmpInfo.bmiHeader.biWidth = .dwBmpWidth
.stBmpInfo.bmiHeader.biHeight = -.dwBmpHeight '- .dwBmpHeight
.stBmpInfo.bmiHeader.biPlanes = 1
.stBmpInfo.bmiHeader.biBitCount = 24
.stBmpInfo.bmiHeader.biCompression = BI_RGB
.stBmpInfo.bmiHeader.biSizeImage = 0
'End With
hMDC = CreateCompatibleDC(hdc)
SelectObject hMDC, hBmp
ReleaseDC hWnd, hdc
GetDIBits hMDC, hBmp, 0, .dwBmpHeight, .lpDIBitsSource, .stBmpInfo, DIB_RGB_COLORS
GetDIBits hMDC, hBmp, 0, .dwBmpHeight, .lpDIBitsRender, .stBmpInfo, DIB_RGB_COLORS
DeleteDC hMDC
If .lpWave1 = 0 Or .lpWave2 = 0 Or .lpDIBitsSource = 0 Or .lpDIBitsRender = 0 Or .hDcRender = 0 Then
WaveFree lpWaveObject
dwReturn = 1
End If
'Debug.Print "WaveInit " & .dwFlag
SetTimer hWnd, ByVal VarPtr(lpWaveObject), dwSpeed, AddressOf WaveTimerProc
.dwFlag = .dwFlag Or F_WO_ACTIVE Or F_WO_NEED_UPDATE
'Debug.Print "WaveInit " & .dwFlag
WaveRender lpWaveObject
hdc = GetDC(.hWnd)
WaveUpdateFrame lpWaveObject, hdc, True
ReleaseDC .hWnd, hdc
End With
'********************************************************************
result:
WaveInit = dwReturn
End Function
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
' 一些特效
' 輸入:dwType = 0 關閉特效
' dwType <> 0 開啟特效,參數具體見上面
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Public Sub WaveEffect(lpWaveObject As WAVE_OBJECT, ByVal dwEffectType As WaveEffectType, ByVal dwParam1 As Long, ByVal dwParam2 As Long, ByVal dwParam3 As Long)
Dim dwMaxX As Long, dwMaxY As Long
With lpWaveObject
' Debug.Print "WaveEffect " & .dwFlag
Select Case dwEffectType
Case wClose '關閉特效
.dwFlag = .dwFlag And (Not F_WO_EFFECT)
.dwEffectType = dwEffectType
Exit Sub
'Case wrain '下雨
Case wLaunch '汽艇
.dwEff2XAdd = dwParam1
.dwEff2YAdd = dwParam1
.dwEff2X = WaveRandom(lpWaveObject, .dwBmpWidth - 2) + 1
.dwEff2Y = WaveRandom(lpWaveObject, .dwBmpHeight - 2) + 1
' .dwEffectType = dwEffectType
' .dwEffectParam1 = dwParam1
' .dwEffectParam2 = dwParam2
' .dwEffectParam3 = dwParam3
' .dwFlag = .dwFlag Or F_WO_EFFECT
'Case wWaves '風浪
'Case Else '默認
End Select
.dwEffectType = dwEffectType
.dwEffectParam1 = dwParam1
.dwEffectParam2 = dwParam2
.dwEffectParam3 = dwParam3
.dwFlag = .dwFlag Or F_WO_EFFECT
End With
End Sub
完
2. 電腦玩大型單機游戲出水波紋是顯卡的問題還是求高手
1顯卡驅動,首先確定的是你電源沒問題,900W 不是電壓問題。然後付現率100%不是電磁干擾的問題。顯示器別的游戲沒問題不是硬體問題。
然後現在就是顯卡和顯示器的傳輸線問題了。線不好可能會有波溫。
然後就是顯卡驅動,這個很重要。如果驅動不對,跟不上游戲的引擎演算法,會出現問題,你高配置後的效果演算法和低配置不一樣的。所以換更新驅動看看如果還不行,那就不要玩有問題的游戲了。。。如果很多游戲都這樣 找電腦店檢查時最好的解決辦法。
3. 液晶顯示器玩游戲有水波紋
液晶顯示器和傳統的CRT顯示器,解析度都是重要的參數之一。傳統CRT顯示器所支持的解析度較有彈性,而液晶的像素間距已經固定,所以支持的顯示模式不像CRT那麼多。液晶的最佳解析度,也叫最大解析度,在該解析度下,液晶顯示器才能顯現最佳影像。
目前15英寸液晶的最佳解析度為1024×768,17~19英寸的最佳解析度通常為1280×1024,更大尺寸擁有更大的最佳解析度。
液晶顯示器呈現解析度較低的顯示模式時,有兩種方式進行顯示。第一種為居中顯示:例如在XGA 1024×768的屏幕上顯示SVGA 800×600的畫面時,只有屏幕居中的800×600個像素被呈現出來,其它沒有被呈現出來的像素則維持黑暗。目前該方法較少採用。另一種稱為擴展顯示:在顯示低於最佳解析度的畫面時,各像素點通過差動演算法擴充到相鄰像素點顯示,從而使整個畫面被充滿。這樣也使畫面失去原來的清晰度和真實的色彩。
4. ubuntu登陸不了圖形界面 為什麼
去這里問吧 http://forum.ubuntu.org.cn
http://forum.ubuntu.org.cn/viewtopic.php?t=55026
我最近剛裝的7.10 支持我的ATI X1450
首先知道安裝驅動出問題後無辦法進入圖形界面X後,如何再進入X
進入不了X的話,在啟動菜單的時候選擇第二行的命令模式,
首先是LOGIN 就是輸入你的用戶名然後再輸入密碼。
然後再輸入
sudo dpkg--reconfigure xserver-xorg
在彈出窗口選擇默認的顯卡V...確定就可以,其它的不停確定,有些需要用方向鍵,再確定。
然後輸入statx
這樣又見到桌面,然後再重啟吧,恢復正常!!!
先下載ATI的驅動
8.40.4隻支持9500及以上顯卡,老顯卡不支持(32/64位通吃)
下載
8.41驅動主要要支持HD系列,就是2XXX系列的顯卡,請非HD系用戶不要更新!
下載
選擇合適的驅動
下載到桌面,然後把它改名,把-X86.X86_64去掉。如原來是ati-driver-installer-8.41.7-x86.x86_64.run的改為ati-driver-installer-8.40.4.run
安裝編譯所必須的工具 代碼:
sudo apt-get update
sudo apt-get install mole-assistant build-essential fakeroot dh-make debhelper debconf libstdc++5 linux-headers-$(uname -r)
創建deb包
注意:執行下面的命令的前提是,你必須在終端下用cd命令到你下載的驅動的當前目錄。
比如我的驅動是下載在桌面的, 我就用右鍵選擇驅動文件的屬性,看它的位置,然後復制它的位置。
位置是:/home/zero/Desktop
zero是我的用戶名,如果你的是ABC,而且你都是放在桌面上的話,那麼你的位置是/hom/ABC/Desktop
然後在終端輸入: cd /home/zero/Desktop
你就可以根據你的實際情況輸入:cd ...........
如果是6.10 Edgy: 代碼:
sh *.run --buildpkg Ubuntu/edgy
Ubuntu7.10或是7.04Feisty: 代碼:
sh *.run --buildpkg Ubuntu/feisty
等待桌面生成4個DEB包,先不要管他們。
屏蔽fglrx核心模塊
代碼:
sudo gedit /etc/default/linux-restricted-moles-common
將 代碼:
DISABLED_MODULES=""
改成 代碼:
DISABLED_MODULES="fglrx"
安裝deb包 代碼:
sudo dpkg -i xorg-driver-fglrx_*.deb fglrx-kernel-source*.deb fglrx-amdcccle*.deb
移除舊的fglrx
如果你是第一次做,那麼會提示你這個文件找不到。別管他,繼續往下做就是。 代碼:
sudo rm /usr/src/fglrx-kernel*.deb
sudo apt-get -f install
編譯內核模塊並安裝 代碼:
sudo mole-assistant prepare
sudo mole-assistant update
sudo mole-assistant build fglrx
cd /usr/src
sudo dpkg -i fglrx-kernel-*
sudo depmod -a
防止有些DEB包沒裝好,你可以打開桌面的包,嘗試安裝,證全部到安裝好。
重啟電腦!!
重啟後,配置驅動
注意,如果以前裝過fglrx驅動,此步無須再做。 代碼:
sudo dpkg-reconfigure xserver-xorg
在選擇驅動時,選擇fglrx。
然後
sudo gedit /etc/X11/xorg.conf
在/etc/X11/xorg.conf的Device段添加兩行: 代碼:
Option "VideoOverlay" "on"
Option "OpenGLOverlay" "off"
並且 在末尾
添加兩段 代碼:
Section "Extensions"
Option "Composite" "0"
EndSection
Section "ServerFlags"
Option "AIGLX" "off"
EndSection
上面這兩段很重要!(在7.04中,如果你用了sudo dpkg-reconfigure來配置的話,第一段應該已經有了)
再輸入
sudo mkdir -p /usr/X11R6/lib/moles/dri
sudo ln -s /usr/lib/dri/fglrx_dri.so /usr/X11R6/lib/moles/dri
重啟系統
確認驅動是否正確安裝 代碼:
$ fglrxinfo
display: :0.0 screen: 0
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: Radeon X1650 Series
OpenGL version string: 2.0.6747 (8.40.4)
如果顯示的是
代碼:
fglrxinfo
display: :0.0 screen: 0
OpenGL vendor string: Mesa project: www.mesa3d.org
OpenGL renderer string: Mesa GLX Indirect
version string: 1.2 (1.5 Mesa 6.4.1)
請徹底卸載驅動
代碼:
sudo apt-get remove --purge fglrx-control
sudo apt-get remove --purge fglrx-kernel-source
sudo apt-get remove --purge xorg-driver-fglrx
代碼:
sudo lrm-manager
並把原來裝過的4個包徹底刪除。
代碼:
sudo apt-get autoremove --purge fglrx*
再重新按上面的方法安裝。
代碼:
$ glxinfo | grep render
direct rendering: Yes #如果開啟了xgl,那麼這里一定是No,還有其他一些信息。
二,安裝XGL
1,下載安裝相關組件
代碼:
sudo apt-get install xserver-xgl
2,配置XGL
代碼:
gksudo gedit /usr/local/bin/startxgl.sh
輸入如下內容
代碼:
#!/bin/sh
Xgl :1 -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer &
DISPLAY=:1
cookie="$(xauth -i nextract - :0 | cut -d ' ' -f 9)"
xauth -i add :1 . "$cookie"
exec dbus-launch --exit-with-session gnome-session
代碼:
sudo chmod a+x /usr/local/bin/startxgl.sh
代碼:
gksudo gedit /usr/share/xsessions/xgl.desktop
輸入如下內容
代碼:
[Desktop Entry]
Encoding=UTF-8
Name=Xgl
Comment=Start an Xgl Session
Exec=/usr/local/bin/startxgl.sh
Icon=
Type=Application
至此,XGL安裝完畢,重啟系統,登陸時選擇XGL會話;暫時不要將此會話設為默認,萬一有問題還可以回到gnome,等XGL穩定了再設成默認。
安裝Compiz及Compiz fusion
代碼:
sudo apt-get install compiz compiz-gnome
sudo apt-get install compizconfig-settings-manager
sudo apt-get install compiz-fusion-*
一定記得重啟後選擇會話成XGL
登陸時選擇XGL會話,進入系統後COMPIZ默認就啟動了!
) Compiz Manager
這個是管理器,開機自啟動(就是那個面板上的紅色立方體)。用來調用CGWD Themer和Compiz Settings Manger,以及可以隨時切換XGL/compiz和Gnome桌面環境。如果XGL出現問題,可以reload一下。
3) Compiz Settings Manager
這個就是前面安裝的csm,用來設置XGL/compiz的各項插件。
找到並打開 系統-首選項-Compiz Settings Manager,這里可以對插件的各部分進行設置。點擊每個選項邊上的 i 圖標可以查看該選項的內容和設置方式,還有一個像掃把一樣的圖標是恢復默認設置,如果你設置的不滿意可以reset。另外,可能系統沒有映射super 鍵,那就需要將win鍵映射為super鍵。找到系統-首選項-鍵盤-布局選項 的 alt/win鍵行為,選中 super被映射到Windows鍵。
先簡要說一下各插件的作用:(已更新)
Animation Effects
使得窗口的打開、關閉、聚焦等產生諸如神燈、夢幻、旋轉、波浪、縮放等動畫效果。
Benchmark:測試compiz下的3D加速情況。調用方法:super+F12。
Blur:使窗口邊框產生磨砂玻璃的模糊特效,默認開啟且質量為fast。
Brightness and Saturation:設置窗口的亮度和色彩飽和度,默認啟用。調用方法:按住ctrl並滾動滑鼠滾輪調節色彩飽和度,按住shift並滾動滑鼠滾輪調節亮度。
Crash handler:XGL/compiz崩潰時可以自動重啟XGL。
Desktop Cube:設置3D立方體的背景、頂部和底部,速度等,默認開啟。
Window Decoration:窗口的邊框,配合透明度、飽和度和亮度,默認開啟。
Fading Windows:給窗口和其他 GUI 部件提供淡入淡出效果,默認開啟。
Minimize Effect:對窗口最大化/最小化過程進行渲染,默認開啟。
Move Window:移動窗口,可以調整移動時的透明度,默認開啟。調用方法:按住alt和滑鼠左鍵,出現一個十字架,或者用組合鍵alt+F7。
Negtive:使整個桌面或者當前窗口反色。調用方法:super+m,super+n。
Place Windows:打開窗口時放到合適位置,默認開啟。
Dektop Plane
將所有窗口放在一個平面上。不是很好看。
Put:將窗口放到當前工作區的上左、上中、上右、左、正中、右、左下、下中和右下,以及放到其他工作區。自己可以定義組合鍵。
Implements reflections on decorations:將一張png格式的圖片作為窗口邊框的背景。不建議開啟,與blur插件有點小沖突,特別是你有上面板的話。
Resize Window:改變窗口的大小,默認開啟。調用方法:alt+滑鼠中鍵(即按下滾輪)或者alt+F8。
Rotate Cube:旋轉3D桌面。
Scale:像mac一樣的平鋪窗口,默認開啟。調用方法:滑鼠移到屏幕四角(嚴格講,右下角不是該插件的作用,而是Shows the desktop插件的)或者按F8,F10,F11,F12。
Screenshot:抓滑鼠選定的區域的圖。調用方法:super+滑鼠左鍵(按住並選定一塊區域)。
Shows the desktop:顯示桌面,其實是將窗口向屏幕的上下或者其他方向移動,默認開啟。調用方法:按F7,或者滑鼠移到屏幕右下角。
Set Window Attribs by various criteria:單獨設置某些桌面元素如窗口、菜單、面板等的屬性(如透明度、色彩飽和度、亮度等)。
Application Switcher:切換窗口實現膠片預覽效果。除了當前窗口其他都半透明。默認開啟。調用方法:alt+tab等,可自定義。
Window focus leaves a trial:依照窗口未被使用的時間改變亮度、色彩飽和度和不透明度。默認開啟。
Water Effect:使屏幕產生雨點效果,水波紋效果以及窗口標題欄的水波效果。調用方法:shift+F9,shift+F8,可自定義。
Wobbly Windows:使窗口等產生凝膠效果(象橡皮糖一樣),默認開啟。
Zoom Desktop:放大屏幕,默認開啟。調用方法:super+滑鼠滾輪或super+滑鼠右鍵。
下面說一下各插件的設置。一般情況下,默認設置就可以了,有些插件如果有特殊要求可以自己修改參數。
先把幾個通用的選項說一下。
Keyboard:鍵盤組合鍵的設置,一般是ctrl, alt, super(win), shift+其他鍵。可以自定義。
Mouse:滑鼠和鍵盤的組合鍵。button number就是滑鼠上的按鍵。常用的有 1: 滑鼠左鍵,2:滑鼠中鍵(即按下滾輪),3:滑鼠右鍵,4:滾輪向上,5:滾輪向下。
Screen Edges:滑鼠移動到屏幕的某個角落並執行特定操作。
如果有可以更換或添加圖片或者圖標的框,一定要把圖片轉換成png格式,並完整填入圖片所在地址。
General Options
一般設置。Choices中除了TextFilter可以改成best以使窗口鋸齒更平滑外,其他保持默認即可。Commands中可自定義用組合鍵打開的程序或者命令,和Keyboard聯合使用。
比如,你在Commands的Command line 0中填入 gnome-system-monitor,然後在Keyboard找到Run Command 0,把Control、Alt 鉤上,並在Key Name中填入Delete;你就可以用ctrl+alt+delete組合來打開系統監視器了。
Animation Effects
可自己選擇各種效果以及持續時間、波的寬度、波的幅度。grid resolution 越高,解析度越大,資源佔用越多。該插件調用時比較耗資源。
Benchmark
保持默認即可。
Blur
模糊質量可調成fast, best和nonfragment。nonfragment可以自己調節模糊程度,與Numeric Values配合使用。建議只用fast,其他的並不是很好。感覺這個插件非常耗資源,而且是一直都在消耗。關閉後benchmark可以增加100多,而且效果還不如換一個不是非常透明的邊框主題來的好,有不少缺陷。大可把他關閉。
Brightness and Saturation
保持默認。可以更改調節亮度和飽和度的步長。
Crash handler
保持默認。
Desktop Cube
可以鉤上Scale image on top、Skydome、Animate Skydome、Scale image on bottom使立方體更漂亮。頂部、底部的圖片可以更換。
Window Decoration
保持默認。
Fading Windows
保持默認。可以把Visual Bell 和 Urgent鉤上,在某些情況下如系統出問題,msn對話中會使屏幕反復變暗。可在Urgent Count修改變暗的次數。
Minimize Effect
可以把Window Types中的Unknown 鉤上,使右鍵菜單和應用程序菜單有淡入淡出效果。
Move Window
保持默認。
Negtive
保持默認。
Place Windows
保持默認。
Desktop Plane
類似rotate cube的一個插件,不過似乎效果很差,不建議使用。(跟rotate也有一點沖突)
Put
可以自己照著例子修改一下組合鍵。
Implements reflections on decorations
填入一個png圖片的地址即可。不建議使用。
Resize Window
保持默認即可。可以更改resize的模式,有normal、stretch、outline、filled outline。透明度也可以改,我是把兩個都設成75。
Rotate Cube
保持默認即可。可自定義選裝的組合鍵。
Scale
保持默認。可更改平鋪的演算法,normal, enhanced, organic。建議將Initiate Window Picker for Current App鍵的F11改成F6,以免和全屏快捷鍵沖突。
Screenshot
保持默認。可以修改圖片的保存目錄。
Shows the desktop
保持默認。可以修改窗口的隱藏方向,在window direction。0是上,1是下,2是左,3是右,4是上下,5是左右。
Set Window Attribs by various criteria
我只會調節透明度、飽和度和亮度。知道其他設置的朋友可否教我一下 Very Happy 。格式是
代碼:
w:窗口類型名:整數
比如:
代碼:
w:Dock:60
w:Unknown:75
w:Splash:75
等等。
Application Switcher
一般保持默認。如果覺得組合鍵不方便,可以自己改。建議鉤上 Auto Rotate和Temp UnMinimize。
Window focus leaves a trial
可以根據需要調節最低透明度、飽和度、亮度。
Water Effect
可以把Title wave on System Bell鉤上,最典型的效果就是在終端按Backspace,就會在標題欄顯示水波紋。另外,可以把initiate 裡面的鍵設成super+w,按住可以看到滑鼠周圍有水波紋。該插件被調用時非常耗資源。
Wobbly Windows
該插件比較耗資源。如果有人不喜歡,可以不用把這個插件鉤上。可以修改各種你喜歡的窗口類型,使其擁有凝膠效果,一般默認的即可。不過有些朋友討厭菜單也這樣的,可以把Map Window Types里的Unknown去掉前面的鉤。可以任意修改各種窗口的彈度系數(Spring K)和摩擦系數(Friction)。另外可以把Grid Resolution(柵格解析度)調到60,我調到60以上會有部分窗口出現褶皺;Minimun Grid Size可以調到4(越小越精細)。還可以把Keyboard中的Shiver(顫動)設成super+s,按住這兩個鍵,當前窗口會顫動(非常耗資源)。
Zoom Desktop
建議把Filter Linear 鉤上,可使放大時比較平滑。其他保持默認。該插件調用時比較耗資源。
5. 千元級手機新標桿 Redmi Note 9 4G極致性價比手機評測
Redmi自從接過小米「極致性價比」的大旗之後,每一款產品都深受廣大消費者認可,小米Note 8系列自問世以來,累計銷量超過3000萬台,這樣的恐怖的數字足以說明,消費者對於這個系列產品的肯定。
現在,全新的升級版Redmi Note 9系列產品來襲,這個系列的產品一共有3款,他們分辨是Redmi Note 9 4G、Redmi Note 9 5G、Redmi Note 9Pro 5G,下面我就來和大家一起來體驗一下其中性價比最為突出的一款手機。
總結:Redmi Note 9 4G手機擁有極其出色的續航表現,6000mAh的超大電池容量,完全能夠滿足兩三天一沖的需求,應對目前耗電量巨大的短視頻應用,能夠做到非常出色的日常使用體驗,同時護眼屏幕顯示效果細膩,並且128G起步的超大存儲空間,很好的滿足了絕大部分人們的使用要求,綜合來看,這款手機絕對是千元左右的新標桿。
6. 閃付pass是什麼意思
閃付表示銀聯非接觸式支付產品,用具備「閃付」功能的金融IC卡或銀聯移動支付產品,在支持銀聯「閃付」的非接觸式支付終端上,輕松一揮便可快速完成支付。
閃付是金融IC卡的一種快捷交易方式,基於安全晶元及非接觸式支付技術。具有閃付功能的金融IC卡的卡面有中文「閃付」和英文「QuickPass」字樣或水波紋圖樣。 當持卡人使用具有閃付功能的金融IC卡或支持閃付的移動設備,在境內指定商戶進行1000元及以下的交易時,只需將卡片或移動設備靠近POS機的「閃付」感應區,即可完成支付。支付過程中,持卡人不會被要求輸入密碼,也無需簽名,這稱之為小額免密免簽服務
拓展資料
」閃付「功能的安全性
1.2019年4月,中國銀聯聯合商業銀行共同開展新一輪告知服務,提供小額雙免一鍵開關功能。
2.提供「風險全額賠付」服務 為減少持卡人用卡安全顧慮,中國銀聯聯合各商業銀行為持卡人設置了專項補償金,提供小額雙免「風險全額賠付」服務,對於正常用卡客戶發生的雙免盜用損失,經核實都可得到全額賠付。
3.中國銀聯還將聯合商業銀行建立線上快速理賠通道,在雲閃付APP安全中心上線快速賠付受理功能,進一步提升持卡人賠付體驗。
手機模擬成了「銀行卡」,用這張「銀行卡」貼近破司機、輸入密碼,完成交易。 手機就是「銀行卡」,是因為手機里有和銀行卡類似的晶元,可以理解為NFC,在開通各種Pay時會向銀行申請一個虛擬卡號,這個虛擬卡號會寫到手機里的NFC晶元內,此時這個晶元就模擬成了一張銀行卡,只是這個卡是虛擬看不見的,銀行里對這個卡是有記錄的,所以才能支付。 NFC可以存儲多個虛擬卡號,所以可以綁定多個銀行卡。當然不同手機由於晶元演算法的限制,能綁定的銀行卡數量也有限制。
7. 鏟屎官的福音,石頭T7S掃拖一體機測評
熟悉我的朋友都知道,我是個堅定的米家一代掃地機器人釘子戶,這些年已經陸陸續續買了三台給自己和兩邊家長家裡使用了。為啥一直不升級,一個是近些年的掃拖一體機的拖地功能基本是白給,一個就是性價比高。
自家的米家一代三年用下來,最近老是碰撞感測器報錯,感覺是壽命快到了。老伙計這么久用下來,大體上還是很滿意的,就是幾個問題還是要和大家分享下。第一個就是主刷纏繞各種毛發的問題,家裡領導頭發多,經常掉頭發,加上養了3個扁扁的加菲,最近是隔三差五就提示我清理主刷;第二點是避障一般,主卧里鋪了一塊地毯,隔三差五把地毯角落給吸進去,就卡住了;最後就是塵盒略小,各位鏟屎官一定都知道主子們是最喜歡把毛發和貓砂帶著到處跑的,一般清掃兩次集塵盒就是滿滿一堆垃圾。
出於對米家一代的認可,選購新的掃地機器人的時候,肯定是優先考慮石頭的產品了。目前石頭主推的是最新款的T7S和T7S Plus,主要區別是Plus版本多了一個AI結構光避障,其他和T7S一樣。T7S和上一代T7除了日常升級演算法外,最大的升級主要有三點。第一個就是那個特別容易鏟頭發的主刷改成了不容易纏繞毛發的TPU柔性膠刷;第二個是在拖地功能上升級了橫向震動拖布,拖地功能更進一步;以及我認為最重要的升級,支持後期選購集塵盒模塊。
具體的對比可以看上面的表格,300元的差價讓我放棄了T7S Plus,留點錢買1500的集塵模塊更香。產品是618期間買的,收到使用小一個月了,和各位值友分享下自己的使用體會。
T7S的包裝我還是很喜歡的,在部分國產品牌包裝越來越月餅化的情況下,一個簡單的單層紙箱子很有環保的感覺。整個紙箱沒有破損,說明紙板的用料不錯。正面是T7S的產品圖,反面是石頭的LOGO。
打開後是上下兩層結構,也是用一層紙板分割,配件比較簡單,我就都放在一起了。包括T7S掃拖一體機、拖地模塊、替換的塵盒濾芯、充電底座、電源線和一本說明書。
一個個來看,首先是機器人本身。還是家族設計,白色搭配銀色按鈕,正面的LDS感測器周圍有一圈水波紋紋理。橙色的按鈕是水箱的開關。
按鍵還是局部清掃、清掃/開機鍵、回充鍵的三鍵設計。同時在局部清掃按鍵中新增了童鎖功能,長按3s即可開啟,對於有熊孩子和寵物的家庭很友好,不用擔心手機APP忽然收到啟動提示。
機身的正面是碰撞緩沖感測器,能過輕觸來識別判定障礙物。如果花300塊升級到T7S Plus,會有AI結構光避障功能,能夠自動識別障礙物,做到不觸碰。側面兩顆是沿牆感測器,可以做到掃地機緊貼牆壁進行清掃。
T7S的塵盒還是設計在頂部,打開蓋板就看到了。塵盒容量是470ml,比T7和米家一代都大。濾網放置在塵盒上方,根據重力學定律,灰塵更易掉落到塵盒, 減少濾網灰塵堆積,從而降低清理濾網的頻率。
水箱是一體隱藏式設計,按下橙色按鈕就能取出。水箱容量300ml,官方說是在輕柔模式下,能夠清潔250 的面積,用來拖我們這種百平米狗窩是綽綽有餘。出水採用了恆壓電控,拖地噴灑更加精準。
機底布置變化不大,相較T7,主要是增加了一枚超聲波地毯識別感測器。再識別到地毯後會在APP地圖中標注,方便後續掃拖。
比較顯眼的是紅色TPU柔性膠刷,和之前使用的毛刷相比,不用擔心纏繞,所以配件里也就沒有了那把小割刀。
拖地模塊採用了易安裝設計,一推就進去了,拆卸的話按住兩邊的按鈕就能拉出來,很方便。
作為T7S的重要升級,新的拖地模塊能夠模擬超聲波高頻震動,在無刷電機帶動下實現3000 次/分鍾的頻率擦洗,對於寵物在地上的頑固污漬(粑粑除外)會有更好的清潔效果,後面會有實際效果測試。拖布和模塊之前是用魔術貼固定的,拆卸方便。
拖地模塊的側邊可以清楚的看到獨立升降模組,能夠提供5mm升降范圍。當T7S識別到地毯時,會主動升起擦地模組,防止打濕地毯。
石頭的充電底座最喜歡就是背後的這個線材可收納設計了,能夠根據底座和插頭的距離收納長度,不用拖著一坨電線出來。
開箱結束,通電開搞。
T7S支持石頭官方APP和米家APP,連接方便。這點對於消費者來說體驗還是很好的,無論是石頭的鐵粉還是米家生態鏈的用戶,都能有一個集成度高、功能全的APP搞定智能家居,不用下亂七八糟一堆APP。
一眾基礎的功能就不演示了,什麼模式選擇、虛擬牆各家都有。第一次清掃完成後會自動生成地圖,後面就能智能規劃清掃路線了。比較實用的是T7S的地圖管理里多了一個地圖保存功能,還屬於Bata階段。能夠對房間進行自動分區、設定名稱已經保存多樓層的多張地圖,復式豪宅必備。
而在完成分區設置後,我們可以根據自己的需求定製所有區域的掃拖模式,無論是單掃單拖還是掃拖一體,真正做到一家一個清掃方案。
T7S的地毯識別非常精準,家中廚房、衛生間和主卧的三塊地毯一次清潔後都有被標識出來。
在設置中打開地毯增壓模式,下次掃地清潔地毯的時候就會自動開啟最大吸力,增加清潔能力。
在安裝拖地模塊後還有三種地毯清潔模式可以選擇,默認自適應地毯,拖布升降模塊會自動升起並停止出水,只做清掃。
得益於RR mason 8.0演算法,在地圖構建完成後,T7S的後續清掃會自動規劃路徑,更高效的清潔地面。比如我家客廳的這個茶幾就是個簡單的梅花樁,T7S能夠很好的延邊清潔,基本沒啥碰撞。
石頭產品的掃地功能已經是很成熟了,2500Pa大吸力和精準演算法加持下,比較細碎+大顆粒的貓砂都能輕松吸干凈。
清潔完成後就可以通過頂部取出塵盒傾倒垃圾,比部分底部塵盒的設計便捷很多。家裡的三隻貓天天到處跑,一次清潔完470ml的塵盒也是滿滿當當的貓毛。當然等我攢點錢可以入了自動集塵模塊,期待一個月倒一次垃圾的體驗。
在拖地清潔力的測試上我分別往瓷磚上擠了好幾坨照燒醬、番茄醬和醬油,大熱天的靜止一會就有點幹了。其中照燒醬應該是最難清理的,除了醬裡面還有黑胡椒顆粒等等固體,非常考驗掃拖機器人的拖地能力。
APP中選擇精細拖地(只拖不掃),強度標准,稍稍潤濕拖布後就可以開始清潔了。可看到石頭T7S的聲波高頻震動擦地在地面留下了明顯的擦痕,三個污漬都被很好的清潔干凈。智能路徑規劃也把高速反復的擦拭清潔中帶開的污漬二次清潔干凈。
拖完後非常干凈,相比傳統掃拖一體機的壓力拖布清潔力提升明顯。
對於新購入的T7S,一個階段使用體驗下來還是很滿意的。對於常青樹米家一代掃地機器人無論是掃地功能還是拖地功能都有明顯的提升。新的TPU柔性膠刷省去了我隔三差五清潔主刷毛發的煩惱;RR mason 8.0演算法在路線規劃和避障上表現優秀;全球首創的升降式聲波震動的拖地模塊,掃地機器人的拖地功能不再是雞肋,搭配地毯升降功能,實用性也是更強。
如果和我們一樣的養寵物家庭,想要選購一款掃地能力強,塵盒大,拖地功能實用的掃拖一體機,石頭T7S是一個很有必要加入購物車的選擇!
8. OpenGL怎麼製作水波紋
要學習關於矩陣的數學知識,還有就是要找個演算法!
9. 裸眼3d水波紋是系統問題還是硬體問題
企業介紹 深圳市唯創數字文化科技有限公司位於廣東省深圳市。注冊資金500萬,是一家充滿活力的富有創意的多媒體系統集成公司。唯創數字文化自成立初始便專注於多媒體系統集成方案的設計與優質投影應用的施工製作,為客戶提供優質的投影服務。 公司致力於全息投影、互動應用、觸控系統、多媒體系統集成、投影工程、裸眼3D投影、大屏融合、數字展廳、數字片源、軟體開發製作等。唯創數字文化始終堅持Soley Creative(完全創新)的理念!公司擁有一批富有活力的團隊,專業的一體化展覽展示、投影應用的設計施工開發團隊。專業提供展覽展示、投影工程的設計、製作、安裝施工的一體化服務。 唯創數字文化科技有限公司服務於全國,在企事業單位、國家機關、政府機關、科研教育機構等眾多領域得到了合作夥伴的一直認可!唯創數字文化憑借出眾的實力和絕對的創新,讓企業展館更加活躍,讓博物館科技館更加有趣,讓發布會主題公園、房產營銷會更加絢麗多彩,讓您的展覽更加與眾不同! 未來,唯創數字文化將以更加飽滿的熱情,和更加出色的服務回饋新老客戶,堅持Soley Creative(完全創新)的理念,打造出更加富有新意的作品。 主營業務全息投影 全息投影技術(front-projected holographic display)也稱虛擬成像技術是利用干涉和衍射原理記錄並再現物體真實的三維圖像的技術。全息投影技術不僅可以產生立體的空中幻像,還可以使幻像與表演者產生互動,一起完成表演,產生令人震撼的演出效果。 適用范圍產品展覽、汽車服裝發布會、舞台節目、互動、酒吧娛樂、場所互動投影等。 幻影成像系統也稱虛擬成像是基於"實景造型"和"幻影"的光學成像結合,將所拍攝的影像(人、物)投射到布景箱中的主體模型景觀中,演示故事的發展過程。繪聲繪色,虛幻莫測,非常直觀,給人留下較深的印象。由立體模型場景、造型燈光系統、光學成像系統(應用幻影成像膜作為成像介質)、影視播放系統、計算機多媒體系統、音響系統及控制系統組成,可以實現大的場景、復雜的生產流水線、大型產品等的逼真展示。幻影成像的優點在於它成像逼真,立體特效很炫,無需戴3D眼鏡就能夠達到以假亂真的效果。 幻影成像技術已經在國外廣泛使用,在國內的各類博物館、名人故居、百年古鎮、歷史名街、主題公園、遺址公園、城市規劃展示館等也開始逐漸應用。 全息投影分為三大類:180度全息投影、270度全息投影、360度全息投影。 180度全息投影 180度全息不用戴3D眼鏡的立體特效。輕靈的物體在無盡的空間浮動,似乎觸手可及。 全息幻像通過復雜的光學作用在展示台上立體呈現、栩栩如生。 適用於展覽會、新聞發布會、大型會議租賃展示,博物館等展覽場館固定安裝使用。 270全息投影 270度全息為全息影像的一種,全息影像其實就是實現真實的三維圖像的記錄和再現。一般的三維圖只是在二維的平面上通過構圖及色彩明暗變化實現人眼的三維感覺,而全息立體投影產生的全息圖則包含了被記錄物體的尺寸、形狀、亮度和對比度等信息,提供視差。觀察者可以通過前後、左右和上下移動來觀察圖像的不同形象如同有個真實的物體在那裡一樣。 適用於大型購物中心,可用於展示珠寶名表數碼產品等高端精緻商品;高端酒店、高級會所,可用於展示企業LOGO、名酒名品或者作為裝潢風格體現;房地產行業應用,可用於展示戶型等;其它活動秀場,用於發布會等場所,作為場會布置的亮點運用。 360度全息投影 360全息影像也被稱之為、全息三維成像,它是由透明材料製成的四面錐體,觀眾的視線能從任何一面穿透它,通過,觀眾能從錐形空間里看到自由飄浮的影像和圖形。四面視頻成像將光信號反射到這個錐體中的特殊棱鏡上,匯集到一起後形成具有真實維度空間的立體影像。可以使立體影像不藉助任何屏幕或介質而直接懸浮在設備外的自由空間,並且360°任意角度看都是三維影像展現,這種展示手段打破常規的實物展示手段立體影像的清晰度及色彩還真度高,立體感強,因此非常逼真,可以給觀眾以新奇、玄妙的視覺沖擊,激發觀眾探究欲,並可以起到聚集現場人氣、加深參觀者印象、提高被展示物知名度的作用。 360度全息是一種將三維畫面懸浮在實景的半空中成像,營造了亦幻亦真的氛圍,效果奇特,具有強烈的縱深感,真假難辯。形成空中幻象中間可結合實物,實現影像與實物的結合。也可配加觸摸屏實現與觀眾的互動 。可以根據要求做成四面窗口,每面最大2-4米。可做成全息幻影舞台,產品立體360度的演示;真人和虛幻人同台表演;科技館的夢幻舞台等。也適用於各種產品的展出,發布。如:名表、名車、珠寶、工業產品的展出和發布。 互動應用 互動投影系統為融合當今世界最高科技的廣告和娛樂互動系統;互動影音系統提供一種不同尋常並激動人心的廣告與娛樂交相輝映的效果系統,適用於所有公共室內場所,特別是休閑、購物、娛樂及教育場所。 互動應用主要包括:地面互動投影、牆面互動投影、桌面互動、隔空互動、AR互動、電子翻書等。 地面互動投影 地面互動投影採用懸掛在頂部的投影設備把影像效果投射到地面,當參訪著走至投影區域時,通過系統識別,參訪者可以直接使用雙腳或動作與投影幕上的虛擬場景進行交互,互動效果就會隨著你的腳步產生相應的變幻。投石地面互動投影系統是集虛擬模擬技術、圖像識別技術於一身的互動投影項目,包括水波紋、翻轉、碰撞、擦除、避讓、跟隨等表現形式。觀眾通過身體動作來與地面的圖像進行互動,各種特效影像在腳下綻放,帶來一種全新的奇特的體驗。 地面互動投影可用於中心商城、連鎖大賣場、品牌旗艦店 等消費場所;動漫城、娛樂城、電影院、夜總會 等人流聚集區;機場、地鐵、火車站等城市樞紐中心;大型慶典、交易會、展覽會、產品推介會 等活動場所;圖書館、博物館、展覽館、學校、信息中心等教育中心。 牆面互動投影 牆面互動投影系統的運作原理首先是通過捕捉設備(感應器)對目標影像(如參與者)進行捕捉拍攝,然後又影像分析系統分析,從而產生被捕捉物體的動作,該動作數據結合實時影像互動系統,使參與者與屏幕之間產生緊密結合的互動效果。 牆面互動投影技術,可以把人體的直觀運動與牆面有機結合,創造全新的互動空間。它集合了豐富的效果,高清晰的視屏以及多種圖形的運用,能輕易的在任何公共區域帶來令人興奮、有趣的互動體驗,調動觀眾的參與積極性,方便聚攏人氣。無論是藍色海洋還是盛開的花海,可以隨意的選擇。奇幻的視覺效果和美妙的動感和互動觀看,通過互動畫面和聲音吸引顧客和觀眾駐足停留。 牆面互動投影系統可以展示豐富的內容,有圖片、文字、影音等,尤其是各種有趣的互動小游戲。觀眾可以用肢體與投影畫面中的內容進行互動,帶來一種不同尋常的廣告和娛樂交相輝映的效果,可以起到很好的活躍氣氛,增加了展示的科技含量,也為企業用戶提供具有創意內容的展示效果,提高了現場人氣度和相關單位的形象,有很好的宣傳效果。 牆面互動投影適用於范圍很廣泛,可以是科技展廳、企業展廳等展覽會場,迪吧、酒吧、KTV等娛樂場所,也可以是商場、酒店賓館、新品發布會、促銷活動,以及婚慶婚典、廣場等。 桌面互動 桌面投影游戲的工作原理和地面投影系統基本一致,通過對投影畫面特定區域內游戲參與者的動作或手勢的變動,從而執行特定的游戲動作或產生特定的游戲效果。由於游戲的互動性和相應動感效果反饋,使得游戲參與者如果自身置身於游戲其中一樣,同時各種游戲獎勵和懲罰系統更能夠帶動游戲參與者的游戲激情,從而帶動整體消費體驗。 桌面互動也可利用多媒體觸摸查詢技術,多媒體觸控查詢技術的應用非常之廣泛,是結合文字、圖形、影像、聲音、動畫等各種媒體的一種應用,並且是建立在數字化處理的基礎上,它具有多種技術的系統集成性,基本上包含了當今計算機領域內最新的硬體技術和軟體技術。通過觸摸屏查詢設備,以圖片、文字、聲音、視頻、動畫等多媒體方式進行展示查詢。觀眾可隨意方便地進行欣賞和查詢各種信息。 適用於大型會議、產品發布會議;商場、企業展廳;展覽、展示互動式展台;各類交通信息查詢系統;高級酒店、寫字樓等各類會所引導、演示及信息查詢;各類產品形象店導購、演示及信息查詢;高級會議廳演示系統等。 隔空互動 隔空操作是採用先進的計算機視覺技術及光影捕捉技術,隨著手指的揮動、在不接觸任何物體的情況下做出手勢,根據自己的要求發出一些信號,畫面就會做出相應的變化,例如對圖片、視頻進行放大縮小、拖拽、旋轉、播放及暫停、可操控賽車游戲等,可支持多人同時操作,讓操作變得更靈活。不在局限於傳統的滑鼠鍵盤操作形式的束縛。觀眾通過身體手指動作來與大屏幕的圖像進行互動,任意選擇菜單欄目。隔空互動操作系統能帶給觀眾一種全新的互動體驗。 AR互動 AR(Augmented Reality)互動:增強現實是一種全新的人機交互技術 ,利用這樣一種技術 ,可以模擬真實的現場景觀 ,它是以交互性和構想為基本特徵的計算機高級人機界面。使用者不僅能夠通過虛擬現實系統感受到在客觀物理世界中所經歷的"身臨其境"的逼真性 ,而且能夠突破空間、時間以及其它客觀限制 ,感受到在真實世界中無法親身經歷的體驗。 AR互動藉助計算機圖形技術和可視化技術產生現實環境中不存在的虛擬對象,並通過感測技術將虛擬對象准確"放置"在真實環境中,藉助顯示設備將虛擬對象與真實環境融為一體,並呈現給使用者一個感官效果真實的新環境。 在增強現實的環境中 ,使用者可以在看到周圍真實環境的同時 ,還可以看到計算機產生的增強信息。由於增強現實在虛擬現實與真實世界之間的溝壑上架起了一座橋梁,因此 ,增強現實的應用潛力是相當巨大的 ,它可以廣泛應用於軍事、醫學、製造與維修、娛樂等眾多領域。 電子翻書 電子翻書系是利用動作感應技術以及計算機多媒體技術實現的一種虛擬翻書的視覺效果。它展現在參觀者面前的是一本以大屏幕投影機投影方式展現的電子書,參觀者只需要站在展台前方,伸出手臂,在空中做出左右揮動手臂的動作,則計算機就能識別出參觀者的動作,參觀者面前的電子書就會隨著手臂的左右揮動進行前後的翻頁,栩栩如生的動態翻頁效果讓觀眾在驚嘆神奇虛擬技術的同時,也會對圖書內容產生濃厚的興趣。 裸眼3D投影 裸眼3D投影是一種無需配戴眼鏡的3D技術,觀眾可以看到立體的虛擬人物或虛擬場景的技術。一般裸眼3D投影運用在大型牆面投影比較多,3D牆體投影製作搭建是以建築物作為背景,通過投影成像系統,將生動和動態的動畫和建築裝飾相互結合,對畫面、顏色以及光線進行不斷的動態改變,從而實現空間的拓展、變幻,讓整個空間呈現一種質感極強的3D效果,讓觀眾產生一種難以自拔的錯覺,彷彿整個建築都處於一個虛幻的空間,這就是前提投影的動態效果。 大屏融合 大屏幕融合是一種拼接、幾何校正、圖像邊緣融合一體化的處理方式,支持融合帶的寬度調整、及多邊形顯示、不規則投影顯示。投影融合技術就是將一組投影機投射出的畫面進行邊緣重疊,並通過融合技術顯示出一個沒有縫隙更加明亮,超大,高解析度的整幅畫面,畫面的效果就象是一台投影機投射的畫面。 當二台或多台投影機組合投射一幅畫面時,會有一部分影象重疊,邊緣融合的最主要功能就是把二台投影機重疊部分的燈光亮度逐漸調低,使整幅畫面的亮度一致。 比較常見的大屏融合有:弧幕、環幕、球幕、穹幕、U型幕、折幕、沉浸式投影、異形拼接等。 數字展廳 數字展廳又叫做數字化展廳、多媒體數字化展廳等,是指以多媒體和數字化技術作為展示技術,使用最新的影視動畫技術,結合獨到的圖形數字和多媒體技術,以各類新穎的技術吸引參觀者,實現人機交互方式的展廳形式。集各種多媒體展覽展示系統為一體的綜合展示平台,包括數字沙盤、環幕/弧幕/球幕影廳、迎賓地幕系統、互動吧台、互動鏡面及觸摸屏等等。同時,由於融入了各種高新科技技術,讓展廳極具內涵和吸引力,通過對視頻、聲音、動畫等媒體加以組合應用,深度挖掘展覽陳列對象所蘊含的背景、意義,帶給觀眾高科技的視覺震撼感,大大提升了品牌的價值。 投影工程 多媒體系統集成 多媒體系統集成包括計算機軟體、硬體、操作系統技術、資料庫技術、網路通訊技術等的集成,是將各個分離的設備(如個人電腦)、功能和信息等集成到相互關聯的、統一和協調的系統之中,使資源達到充分共享,實現集中、高效、便利的管理。系統集成實現的關鍵在於解決系統之間的互連和互操作性問題,它是一個多廠商、多協議和面向各種應用的體系結構。這需要解決各類設備、子系統間的介面、協議、系統平台、應用軟體等與子系統、建築環境、施工配合、組織管理和人員配備相關的一切面向集成的問題。可以給人一種視覺聽覺與觸覺的感受。 片源製作 軟體開發製作 軟體開發是根據用戶要求建造出軟體系統或者系統中的軟體部分的過程。軟體開發是一項包括需求捕捉、需求分析、設計、實現和測試的系統工程。軟體一般是用某種程序設計語言來實現的。通常採用軟體開發工具可以進行開發。軟體分為系統軟體和應用軟體,並不只是包括可以在計算機上運行的程序,與這些程序相關的文件一般也被認為是軟體的一部分。 軟體設計思路和方法的一般過程,包括設計軟體的功能和實現的演算法和方法、軟體的總體結構設計和模塊設計、編程和調試、程序聯調和測試以及編寫、提交程序。 經營理念Soley creative(完全創新)
10. 小葉紫檀這種老料的好壞只能數年輪辨別嗎
雖然根據常識,樹齡是可以看年輪來辨別的,但對於小葉紫檀來說,這種演算法卻不能通用,因為紫檀長到一定程度後,年輪反而開始變得模糊了,有些甚至被擠壓扭曲,根本沒法數,所以對於按年輪辨料子新老這個方法玩友們還是不要太執著了。
來看這塊印度房梁老料,雖然表面斑駁,溝壑縱深,看似毫無美感可言,但這都是歲月留下的痕跡,多看兩眼,不自覺就被會它的滄桑美感所吸引,忍不住想要探究它走過哪些光陰歲月。再看來這件取自拆房老料製作的筆筒,密緻緊實的紋路是其走過崢嶸歲月的見證,未經刻意雕琢,卻自有一味的外形是那段光陰給予它最好的回饋,那抹綠漆更給這件美物增加了一份意外之喜。