Home > 未分类 > 一种顶点着色器中不处理顶点引发的事故(DriverInternalErrorException)

一种顶点着色器中不处理顶点引发的事故(DriverInternalErrorException)

事故1:
在HDR等后处理渲染中,需要将场景渲染到纹理经过二次处理再贴到屏幕上。在贴到屏幕的过程中对于我这样懒得动矩阵的人来说CustomVertex.TransformedTextured大概是最好的选择。对于Transformed顶点可不经过变换直接画到屏幕上。着色器如下:
vs_2_0
dcl_texcoord0 v1
mov oT0, v1;
该着色器能够正常工作,但是在设备重置时引发DriverInternalErrorException异常。
解决方法:设备丢失后将此着色器Dispose掉,可正常工作。但不知是何原因。
 
事故2:
时隔不久,又需要使用一个vs3.0版本的同样的着色器。能正常显示。但设备重置时即使Dispose该Shader也丢出DriverInternalError。经排查问题必须还是出在这个顶点着色器上。于是想到了是不是因为顶点着色器没有处理顶点的原因。经如下修改,终于解决:
    vs_3_0 
    dcl_texcoord0     
    dcl_position v0 
    dcl_position o0 
    dcl_texcoord0 o1 
    mov o1, v0
    mov o1, v1
并且设备重置时此着色器不需释放重建。太史公曰,狗改不了吃屎的本性,顶点着色器想必也是如此。
<MDX August 2007 @ ATI Radeon X1300>
 
Advertisements
Categories: 未分类
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: