c# - Error using Rasterizer Scissoring in xna -
i'm trying use scissoring clip text drawn using spritebatch.drawstring method.
the following part of draw method:
public override void draw(gametime gametime, spritebatch spritebatch) { ... spritebatch.graphicsdevice.rasterizerstate = new rasterizerstate(); spritebatch.graphicsdevice.rasterizerstate.scissortestenable = true; rectangle rectangle = new rectangle(); rectangle.height = 50; rectangle.width = 1; //set 1 i'll know if it's working spritebatch.graphicsdevice.scissorrectangle = rectangle; (int = 0; < career.news.count; i++) { vector2 newsitems = new vector2(200 + * 80, 550); spritebatch.drawstring(defaulttext, career.news[i], newsitems, color.black); } spritebatch.graphicsdevice.rasterizerstate.scissortestenable = false; ... } i following error:
"cannot change read-only rasterizerstate. state objects become read-only first time bound graphicsdevice. change property values, create new rasterizerstate instance."
which don't understand because i've created new instance in above code. missing?
edit: amended code - errors removed clipping still not working:
rectangle rectangle = new rectangle(); rectangle.height = 50; rectangle.width = 1; rasterizerstate rasterizerstate = new rasterizerstate(); rasterizerstate.scissortestenable = true; spritebatch.graphicsdevice.rasterizerstate = rasterizerstate; spritebatch.graphicsdevice.scissorrectangle = rectangle; (int = 0; < career.news.count; i++) { vector2 newsitems = new vector2(200 + * 80, 550); spritebatch.drawstring(defaulttext, career.news[i], newsitems, color.black); } rasterizerstate rasterizerstate2 = new rasterizerstate(); rasterizerstate2.scissortestenable = false; spritebatch.graphicsdevice.rasterizerstate = rasterizerstate2;
what means can't modify spritebatch.graphicsdevice.rasterizerstate property. need create instance, set properties, , pass spritebatch.graphicsdevice.rasterizerstate.
rasterizerstate r = new rasterizerstate(); r.scissortestenable = true; spritebatch.graphicsdevice.rasterizerstate = r; .... rasterizerstate r1 = new rasterizerstate(); r1.scissortestenable = false; spritebatch.graphicsdevice.rasterizerstate = r1;
Comments
Post a Comment