當前位置:首頁 » 編程軟體 » 編譯著色器0

編譯著色器0

發布時間: 2022-04-11 04:58:23

❶ 《使命召喚》17編譯著色器不動怎麼回事

游戲丟失了一些重要文件。

1、修復游戲:一般出現著色器卡住不動的原因很可能是游戲丟失了一些重要文件,進行游戲修復一般即可解決。

2、著色器問題:玩家們可以在游戲中的畫面設置中進行著色器的重新安裝操作,點擊後游戲會自動刪除著色器重新安裝。

3、卸載並重新安裝游戲:游戲可能丟失了比較重要的文件,並且游戲自身也無法修復,這種情況下只能卸載游戲重裝來解決,以上兩種方法都無法解決著色器安裝問題時,在選擇第三種。

《使命召喚》是由動視公司(現為動視暴雪,2007年12月2日宣布合並)於2003年最初製作發行的FPS游戲系列。

該系列已發布正式作品至第十七部,分別是:《使命召喚》、《使命召喚2》、《使命召喚3》、《使命召喚4:現代戰爭》、《使命召喚:戰爭世界》、《使命召喚:現代戰爭2》、《使命召喚:黑色行動》、《使命召喚:現代戰爭3》、《使命召喚:黑色行動2》。

《使命召喚:幽靈》、《使命召喚:高級戰爭》、《使命召喚:黑色行動3》、《使命召喚:無限戰爭》、《使命召喚:二戰》、《使命召喚:黑色行動4》、《使命召喚:現代戰爭》和《使命召喚:黑色行動 冷戰》。

❷ ue顯示編譯著色器是什麼意思

這是因為UE不太支持中文輸出。在UE里配置的Java編譯命令,編譯後再UE輸出窗口輸出的內容,直接用CMD窗口編譯能夠輸出中文的編譯信息。

❸ WebGL的頂點著色器編譯失敗,問題,怎麼解決

WebGL里有頂點著色器和片段著色器兩種著色器。無論哪一種都可以使用GLSL來編寫。頂點著色器和片段著色器是相互依賴的,缺一不可,並且首先被調用的是頂點著色器。

❹ ue5編譯著色器CPU100%

CPU滿額運轉。
CPU佔用率高的九種可能,防殺毒軟體造成故障,由於新版的KV、金山、瑞星都加入了對網頁、插件、郵件的隨機監控,無疑增大了系統負擔。處理方式:基本上沒有合理的處理方式,盡量使用最少的監控服務吧,或者,升級你的硬體配備,驅動沒有經過認證,造成CPU資源佔用100%,大量的測試版的驅動在網上泛濫,造成了難以發現的故障原因。處理方式:尤其是顯卡驅動特別要注意,建議使用微軟認證的或由官方發布的驅動,並且嚴格核對型號、版本,病毒、木馬造成。
電腦中顯示CPU使用率達到了100%,這說明目前您的CPU正在進行滿額運轉,此時CPU的性能雖然得到了最大化發揮,但是負荷也是最大的,建議您盡量關閉一些不使用的軟體,尤其是游戲軟體,游戲對於CPU的佔用率非常高。

❺ 9800gt獨立512顯卡為何著色器是0

著色器不用管的我的HD5750也測不出來不過9800GT是G92核心絕對是假卡其實本來248買個9800GT就是不可能事件

❻ 這個配置玩虛幻引擎4編譯著色器很慢,怎麼辦

這個過程主要是跑CPU. 你cpu並行能力不足原因,實時渲染才是跑顯卡

❼ 如何使用Android中的OpenGL ES媒體效果

准備

為了開始本次的教程,你必須具備:
1.一款支持Android開發的IDE,如果你沒有的話,可以在Android Developer website下載最新版本的Android studio。
2.一款運行Android4.0之上Android手機,並且GPU支持OpenGL ES2.0
3.對OpenGL的基本知識了解

設置OpenGL ES環境

創建GLSurfaceView

為了顯示OpenGL的圖形,你需要使用GLSurfaceView類,就像其他任何的View子類意義,你可以將它添加到你的Activity或Fragment之上,通過在布局xml文件中定義或者在代碼中創建實例。

在本次的教程中,我們使用GLSurfaceView作為唯一的View在我們的Activity中,因此,為了簡便,我們在代碼中創建
GLSurfaceView的實例並將其傳入setContentView中,這樣它將會填充你的整個手機屏幕。Activity中的onCreate方
法如下:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

GLSurfaceView view = new GLSurfaceView(this);
setContentView(view);
}123456123456

因為媒體效果的框架僅僅支持OpenGL ES2.0及以上的版本,所以在setEGLContextClientVersion 方法中傳入2;
view.setEGLContextClientVersion(2);11

為了確保GLSurfaceView僅僅在必要的時候進行渲染,我們在setRenderMode 方法中進行設置:
view.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);11

創建Renderer

Renderer負責渲染GLSurfaceView中的內容。

創建類實現介面GLSurfaceView.Renderer,在這里我們打算將這個類命名為EffectsRenderer,添加構造函數並覆寫介面中的抽象方法,如下:
public class EffectsRenderer implements GLSurfaceView.Renderer {

public EffectsRenderer(Context context){
super();
}

@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}

@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
}

@Override
public void onDrawFrame(GL10 gl) {
}
}

回到Activity中調用setRenderer方法,讓GLSurfaceView使用我們創建的Renderer:
view.setRenderer(new EffectsRenderer(this));11

編寫Manifest文件

如果你想要發布你的App到谷歌商店,在AndroidManifest.xml文件中添加如下語句:
<uses-feature android:glEsVersion="0x00020000" android:required="true" />11

這會確保你的app只能被安裝在支持OpenGL ES2.0的設備之上。現在OpenGL環境准備完畢。

創建一個OpenGL平面

定義頂點

GLSurfaceView是不能直接顯示一張照片的,照片首先應該被轉化為紋理,應用在OpenGL square之上。在本次教程中,我將創建一個2D平面,並且具有4個頂點。為了簡單,我將使用一個長方形,現在,創建一個新的類Square,用它來代表形狀。
public class Square {

}123123

默認的OpenGL系統的坐標系中的原點是在中心,因此4個角的坐標可以表示為:

左下角: (-1, -1)
右下角:(1, -1)
右上角:(1, 1)
左上角:(-1, 1)

我們使用OpenGL繪制的所有的物體都應該是由三角形決定的,為了畫一個方形,我們需要兩個具有一條公共邊的三角形,那意味著這些三角形的坐標應該是:

triangle 1: (-1, -1), (1, -1), 和 (-1, 1)
triangle 2: (1, -1), (-1, 1), 和 (1, 1)

創建一個float數組來代表這些頂點:
private float vertices[] = {
-1f, -1f,
1f, -1f,
-1f, 1f,
1f, 1f,
};123456123456

為了在square上定位紋理,需要確定紋理的頂點坐標,創建另一個數組來表示紋理頂點的坐標:
private float textureVertices[] = {
0f,1f,
1f,1f,
0f,0f,
1f,0f
};123456123456

創建緩沖區

這些坐標數組應該被轉變為緩沖字元(byte buffer)在OpenGL可以使用之前,接下來進行定義:
private FloatBuffer verticesBuffer;
private FloatBuffer textureBuffer;1212

在initializeBuffers方法中去初始化這些緩沖區:使用ByteBuffer.allocateDirect來創建緩沖區,因為float是4個位元組,那麼我們需要的byte數組的長度應該為float的4倍。

下面使用ByteBuffer.nativeOrder方法來定義在底層的本地平台上的byte的順序。使用asFloatBuffer方法將
ByteBuffer轉化為FloatBuffer,在FloatBuffer被創建後,我們調用put方法來將float數組放入緩沖區,最後,調用
position方法來保證我們是由緩沖區的開頭進行讀取。
private void initializeBuffers(){
ByteBuffer buff = ByteBuffer.allocateDirect(vertices.length * 4);
buff.order(ByteOrder.nativeOrder());
verticesBuffer = buff.asFloatBuffer();
verticesBuffer.put(vertices);
verticesBuffer.position(0);

buff = ByteBuffer.allocateDirect(textureVertices.length * 4);
buff.order(ByteOrder.nativeOrder());
textureBuffer = buff.asFloatBuffer();
textureBuffer.put(textureVertices);
textureBuffer.position(0);
}

創建著色器

著色器只不過是簡單的運行在GPU中的每個單獨的頂點的C程序,在本次教程中,我們使用兩種著色器:頂點著色器和片段著色器。
頂點著色器的代碼:
attribute vec4 aPosition;
attribute vec2 aTexPosition;
varying vec2 vTexPosition;
void main() {
gl_Position = aPosition;
vTexPosition = aTexPosition;
};12345671234567

片段著色器的代碼
precision mediump float;
uniform sampler2D uTexture;
varying vec2 vTexPosition;
void main() {
gl_FragColor = texture2D(uTexture, vTexPosition);
};123456123456

如果你了解OpenGL,那麼這段代碼對你來說是熟悉的,如果你不能理解這段代碼,你可以參考OpenGL documentation。這里有一個簡明扼要的解釋:

頂點著色器負責繪制單個頂點。aPosition是一個變數被綁定到FloatBuffer上,包含著這些頂點的坐標。相似
的,aTexPosition 是一個變數被綁定到FloatBuffer上,包含著紋理的坐標。gl_Position
是一個在OpenGL中創建的變數,代表每一個頂點的位置,vTexPosition是一個數組變數,它的值被傳遞到片段著色器中。

在本教程中,片段著色器負責square的著色。它使用texture2D方法從紋理中拾取顏色,並且使用一個在OpenGL中被創建的變數gl_FragColor將顏色分配到片段。

在該類中,著色器的代碼應該被轉化為String。
private final String vertexShaderCode =
"attribute vec4 aPosition;" +
"attribute vec2 aTexPosition;" +
"varying vec2 vTexPosition;" +
"void main() {" +
" gl_Position = aPosition;" +
" vTexPosition = aTexPosition;" +
"}";

private final String fragmentShaderCode =
"precision mediump float;" +
"uniform sampler2D uTexture;" +
"varying vec2 vTexPosition;" +
"void main() {" +
" gl_FragColor = texture2D(uTexture, vTexPosition);" +
"}";

創建程序

創建新的方法initializeProgram來創建一個編譯和鏈接著色器的OpenGL程序。

使用glCreateShader創建一個著色器對象,並且返回以int為表示形式的指針。為了創建頂點著色器,傳遞
GL_VERTEX_SHADER給它。相似的,為了創建一個片段著色器,傳遞GL_FRAGMENT_SHADER給它。下面使用
glShaderSource方法關聯相對應的著色器代碼到著色器上。使用glCompileShader編譯著色器代碼。
在編譯了著色器的代碼後,創建一段新的的程序glCreateProgram,與glCreateShader相似,它也返回一個以int為表示形式的指針。調用glAttachShader方法附著著色器到程序中,最後,調用glLinkProgram進行鏈接。

代碼:
private int vertexShader;
private int fragmentShader;
private int program;

private void initializeProgram(){
vertexShader = GLES20.glCreateShader(GLES20.GL_VERTEX_SHADER);
GLES20.glShaderSource(vertexShader, vertexShaderCode);
GLES20.glCompileShader(vertexShader);

fragmentShader = GLES20.glCreateShader(GLES20.GL_FRAGMENT_SHADER);
GLES20.glShaderSource(fragmentShader, fragmentShaderCode);
GLES20.glCompileShader(fragmentShader);

program = GLES20.glCreateProgram();
GLES20.glAttachShader(program, vertexShader);
GLES20.glAttachShader(program, fragmentShader);

GLES20.glLinkProgram(program);
}

你可能會發現,OpenGL的方法(以gl開頭的)都是在GLES20類中,這是因為我們使用的是OpenGL ES2.0,如果我們使用更高的版本,就會用到這些類:GLES30,GLES31。

畫出形狀

現在定義draw方法來利用我們之前定義的點和著色器進行繪制。

下面是你需要做的:
1.使用glBindFramebuffer方法創建一個幀緩沖對象(FBO)
2.調用glUseProgram創建程序,就像之前所提
3.傳遞GL_BLEND給glDisable方法,在渲染過程中禁用顏色的混合。
4.調用glGetAttribLocation得到變數aPosition和aTexPosition的句柄
5.使用glVertexAttribPointer連接aPosition和aTexPosition的句柄到各自的verticesBuffer和textureBuffer
6.使用glBindTexture方法綁定紋理(作為draw方法的參數傳入)到片段著色器上
7.調用glClear方法清空GLSurfaceView的內容
8.最後,使用glDrawArrays方法畫出兩個三角形(也就是方形)

代碼:
public void draw(int texture){
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, 0);
GLES20.glUseProgram(program);
GLES20.glDisable(GLES20.GL_BLEND);

int positionHandle = GLES20.glGetAttribLocation(program, "aPosition");
int textureHandle = GLES20.glGetUniformLocation(program, "uTexture");
int texturePositionHandle = GLES20.glGetAttribLocation(program, "aTexPosition");

GLES20.glVertexAttribPointer(texturePositionHandle, 2, GLES20.GL_FLOAT, false, 0, textureBuffer);
GLES20.glEnableVertexAttribArray(texturePositionHandle);

GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture);
GLES20.glUniform1i(textureHandle, 0);

GLES20.glVertexAttribPointer(positionHandle, 2, GLES20.GL_FLOAT, false, 0, verticesBuffer);
GLES20.glEnableVertexAttribArray(positionHandle);

GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
}

在構造函數中添加初始化方法:
public Square(){
initializeBuffers();
initializeProgram();
}12341234

渲染OpenGL平面和紋理

現在我們的渲染器什麼也沒做,我們需要改變它來渲染我們在前面創造的平面。

首先,讓我們創建一個Bitmap,添加一張照片到res/drawable文件夾之下,我把它命名為forest.jpg,使用BitmapFactory將照片轉化為Bitmap。另外將照片的尺寸存儲下來。

改變EffectsRenderer的構造函數如下,
private Bitmap photo;
private int photoWidth, photoHeight;
public EffectsRenderer(Context context){
super();
photo = BitmapFactory.decodeResource(context.getResources(), R.drawable.forest);
photoWidth = photo.getWidth();
photoHeight = photo.getHeight();
}1234567812345678

❽ 怎樣修改電腦像素著色器

上午花了幾個小時仔細研究了一下像素著色器中的多重紋理,由於對固定流水線比較熟悉,所以看這本書看的比較快。下面就來解析一下這個多重紋理,對於一些不太明白的東西也做一下討論: 1、利用DirectX Caps Viewer查我的顯卡(GeForce 9400 GT)支持的著色器版本,是3.0,這樣最好了,支持16層紋理。對於D3DXCompileShaderFromFile()這個函數,有個參數值得注意,就是Flags,書(DirectX 9.0 游戲看法編程基礎)上只講了三種合法的編譯選項,但是我們如果直接在VS上運行它的代碼,發現出錯,就是因為這個Flags的緣故。解決辦法:查看SDK,發現其實不只有三種,DX9支持10中FLAGES,而DX10支持的更多,解決方法有二:修改ps_1_1為ps_3_0,不改變FLAGES,具體看你的顯卡了;方法二是修改D3DXSHADER_DEBUG為D3DXSHADER_ENABLE_BACKWARDS_COMPATIBILITY可把1.0當做2.0編譯,即向後兼容,不過這個編譯項是DX10支持的,加入相應的庫鏈接就可以。 2、對於編譯好的shader,我們用通過CreatePixelShader獲得IDirectX3DPixelShader9介面(DX都是對一些介面進行操作)的指針,要通過應用程序改變設定shader(著色器)裡面的變數值或初始值,我們必須使用介面ID3DConstantTable,使用下面的語句便是初始化為默認值。 show sourceview source print? 1MultiTexCT->SetDefaults(Device);通過下面的語句進行設定: show sourceview source print? 1HRESULT SetXXX( 2 LPDIRECT3DDEVICE9 pDevice, 3 D3DXHANDLE hConstant, 4 XXX VALUE 5);對於紋理,第一步載入到相應的介面中: show sourceview source print? 1D3DXCreateTextureFromFile(Device, "crate.bmp", &BaseTex); 2D3DXCreateTextureFromFile(Device, "spotlight.bmp", &SpotLightTex); 3D3DXCreateTextureFromFile(Device, "text.bmp", &StringTex);第二步得到著色器中紋理采樣器的句柄: view source print? 1BaseTexHandle = MultiTexCT->GetConstantByName(0, "BaseTex");//此BaseTex與上面的BaseTex不同,這個BaseTex是著色器裡面的采樣器名稱,那個是紋理介面 2SpotLightTexHandle = MultiTexCT->GetConstantByName(0, "SpotLightTex"); 3StringTexHandle = MultiTexCT->GetConstantByName(0, "StringTex");第三步是設定著色器中的采樣器的值,我實驗了有兩種方法,個人感覺書上的更繁瑣一些:書上的,先用GetConstantDesc得到采樣器的描述情況,由於描述情況包含了採用器的注冊索引,具體參考課本: show sourceview source print? 1MultiTexCT->GetConstantDesc(BaseTexHandle, &BaseTexDesc, &count); 2 Device->SetSamplerState(BaseTexDesc.RegisterIndex, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); 3 Device->SetSamplerState(BaseTexDesc.RegisterIndex, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); 4 Device->SetSamplerState(BaseTexDesc.RegisterIndex, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR); 第二種方法是自己無意間查SDK發現的,就是直接得到采樣器的注冊索引,而不通過描述情況,如下: view source print? 1// base tex 2Device->SetTexture(MultiTexCT->GetSamplerIndex(BaseTexHandle), BaseTex); 3Device->SetSamplerState(MultiTexCT->GetSamplerIndex(BaseTexHandle), D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); 4Device->SetSamplerState(MultiTexCT->GetSamplerIndex(BaseTexHandle), D3DSAMP_MINFILTER, D3DTEXF_LINEAR); 5Device->SetSamplerState(MultiTexCT->GetSamplerIndex(BaseTexHandle), D3DSAMP_MIPFILTER, D3DTEXF_LINEAR); view source print? 1第四步就是調用來設定采樣器和其綁定的紋理:<DIV class=cnblogs_Highlighter><PRE class=brush:cpp>IDirect3DDevice9::SetTexture 2 3</PRE> 4</DIV>

❾ 底特律變人著色器編譯長時間

底特律變人著色器需要大概渲染6~7小時
希望對你有幫助

❿ apex編譯著色器怎麼解決

在程序設置先選中《Apex英雄》,然後找到著色緩存器,先關閉然後點擊應用,然後再重新打開再次應用。等載入著色器成功,之後在進入《Apex英雄》就不需要每次載入著色器了。

首先在節目設置中選中 Apex的英雄,然後找到顏色緩存器,關閉然後點擊應用,然後再重新打開應用程序。等待著色器被載入成功,之後每次進入 Apex英雄都不再需要每次載入顏色。

韓國Nexon子公司Symmetricspace開發的新款休閑射擊網游《APEX》。《APEX》是一款休閑動作TPS,玩家可以體驗簡單、暢快的戰斗。

游戲介紹:

韓國Nexon子公司Symmetricspace開發的新款休閑射擊網游《APEX》。《APEX》是一款休閑動作TPS,玩家可以體驗簡單、暢快的戰斗。游戲標榜「正面突擊」即固定正面視角,使初學者也可簡單上手。此外,作為休閑游戲,玩家可以利用眾多補助道具展開快速的攻防戰斗。

《APEX》的游戲模式有玩家間對戰模式(PVP)、玩家們共同協力鎮壓敵軍的模式(PVE),此外游戲中還添加了多樣的迷你游戲。

熱點內容
排列概率演算法 發布:2025-03-14 16:26:35 瀏覽:371
caffepython使用 發布:2025-03-14 16:13:17 瀏覽:230
小明加密訪問 發布:2025-03-14 16:12:36 瀏覽:861
mysql怎麼導出資料庫 發布:2025-03-14 15:47:52 瀏覽:988
錄制的視頻怎麼保存到存儲卡 發布:2025-03-14 15:46:19 瀏覽:794
curl源碼編譯 發布:2025-03-14 15:43:55 瀏覽:354
天龍八部無憂腳本 發布:2025-03-14 15:34:46 瀏覽:25
jdk764forlinux 發布:2025-03-14 15:34:40 瀏覽:361
安卓車機怎麼使用實景導航 發布:2025-03-14 15:33:15 瀏覽:907
變數的存儲分配 發布:2025-03-14 15:01:12 瀏覽:173