游戏开发论坛

 找回密码
 立即注册
搜索
查看: 7505|回复: 14

请教一个“国际象棋棋盘格”样式的屏幕刺激程序

[复制链接]

3

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2007-4-20 21:32:00 | 显示全部楼层 |阅读模式
请教一个“国际象棋棋盘格”样式的屏幕刺激程序

由于做视觉刺激的需要,需要在屏幕上生成一个8×8的棋盘格,每个方格的颜色非黑即白,(有自己的规则)

现在的问题就是,比如每50ms一帧,要刺激进行半小时,数据量非常大,我试验了一下,如果一个方格用2个三角形6个顶点的话,(DX里最简单的,一个方格里有两个顶点重复)那样半个小时的VertexBuffer数据量一下子都生成出来,512M内存根本不够用的

如果使用IndexBuffer那么一帧最多只有81个Vertices,坐标是固定的,可是由于这81个顶点的颜色要根据规则变化的,使用IndexBuffer就没法改颜色了

请问有熟悉的朋友指明一下思路,自学好久,还是得需要高人指点一下思路,先谢谢了!!!

14

主题

77

帖子

83

积分

注册会员

Rank: 2

积分
83
发表于 2007-4-20 21:56:00 | 显示全部楼层

Re:请教一个“国际象棋棋盘格”样式的屏幕刺激程序

顶点数量、位置又没有变,不是修改顶点颜色就可以了吗?

3

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2007-4-20 22:38:00 | 显示全部楼层

Re:请教一个“国际象棋棋盘格”样式的屏幕刺激程序

顶点已经定义好颜色和坐标,并放入缓冲了,还能再修改颜色吗???

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2007-4-21 02:13:00 | 显示全部楼层

Re:请教一个“国际象棋棋盘格”样式的屏幕刺激程序

先定义8个字节变量b[8],就有了 8*8个位。
没一位表示一个方块。
0 代表黑色, 1 代表白色。

然后b[8]你可以随便调。
不就OK了?

3

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2007-4-21 22:22:00 | 显示全部楼层

Re:请教一个“国际象棋棋盘格”样式的屏幕刺激程序

请详细一点提示好吗? 我是新手,先谢谢了
D3D 里面每个方块都是2个三角形 6个顶点的啊 怎么一位就可以代表一个方块那? 是DDraw里的吧?

0

主题

14

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-4-23 14:12:00 | 显示全部楼层

Re:请教一个“国际象棋棋盘格”样式的屏幕刺激程序

1.可以修改得颜色,改之前需要lock下.
可以把vertex,lock了然后改,再unlock回来.看directx的文档Lock Method (IDirect3DVertexBuffer9)项.
2.另外可以用vertexshader来改,具体看一般的direct3d的书都有介绍.这样不需要lock.

0

主题

14

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-4-23 14:13:00 | 显示全部楼层

Re:请教一个“国际象棋棋盘格”样式的屏幕刺激程序

另外,弱弱的问,啥叫刺激程序?神经网络中的刺激吗?

3

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2007-4-23 15:40:00 | 显示全部楼层

Re:请教一个“国际象棋棋盘格”样式的屏幕刺激程序

生物试验 切割下来视网膜 离体 屏幕上图形刺激它 用电极记录它的细胞发放的动作电位

想确认一下,如果这样lock再unlock,那么在执行的时间上是否足够短呢?相邻两帧的显示时间是10~20ms左右的,要再此期间lock->对81个vertex颜色赋值->unlock->drawindexedprimitives()够不够时间啊?

0

主题

14

帖子

20

积分

注册会员

Rank: 2

积分
20
发表于 2007-4-23 15:49:00 | 显示全部楼层

Re:请教一个“国际象棋棋盘格”样式的屏幕刺激程序

我也是新手,不过貌似可以设置lock参数中的flag,做到,lock一部分改,画另一部分的,不需要全部lock了 ,一起改了再画,具体我忘了.呵呵.这样时间就够了

3

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2007-4-23 16:09:00 | 显示全部楼层

Re:请教一个“国际象棋棋盘格”样式的屏幕刺激程序

我目前想法是这样的
1.程序中只存在 (n+1)^2个顶点(围成n×n的棋盘格), n为方形棋盘格的行数(或列数),均定为白色,背景设为黑色;
2.根据生成的m序列, 每n^2个作为一帧的数据; (该n^2个数据非0即1)
3.在一帧中:
   a. 记下1出现的位置(数组下标);
   b. 记下1出现的次数(数组求和);
   c. 根据a,b, 创建该帧中需要画出的三角形(对应数组中出现1的下标)所对应的 该帧的 顶点索引;
4. 重复循环3, 直到所有的帧的索引都创建完毕;
5. 把每帧的顶点索引从头到尾接起来 形成整个索引;

6. 开始画图:
   第n帧中 调用DrawIndexedPrimitives 方法
   DrawIndexedPrimitives(Primitives.TriangleList,
                         baseVertex=?,--------------------看了也不太懂含义                        
                         minVertexIndex=?,----------------看了也不太懂含义
                         numVertices= 第n帧里面要画的三角形个数×3
                         startIndex='前n-1帧索引个数总和'+1,-- (3.b中前n-1帧里面数组元素和)
                         primCount=第n帧里面要画的三角形个数---(3.b中的和)
                         )
7. 循环N次, 把N帧都画完

以上方案 可行吧? 里面的注释部分的问题帮我解释一下好吗? 谢谢
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-26 17:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表