By good guy help , I run understand VTK only through vtkOpenGLExtensionManager to support OpenGL 1.5 or 2.0!<br> <br> So I do it , my program could loadExtention and run , but I could not see anything? I should see a red cube, if program run correct!<br> <br> why? there were something error? who can give some guide?<br> <br> thanks ! Following is my code !<br> <br> ==========================================================<br> <br> int shader()<br> {<br> <br> vtkCubeSource* sphere = vtkCubeSource::New();<br> <br> <br> vtkPolyDataMapper* sphereMapper = vtkPolyDataMapper::New();<br> sphereMapper->SetInputConnection(sphere->GetOutputPort());<br> <br> vtkActor* sphereActor = vtkActor::New();<br> sphereActor->SetMapper(sphereMapper);<br> <br> <br> vtkRenderWindow *renWin =
vtkRenderWindow::New();<br> <br> vtkOpenGLExtensionManager *extensions=vtkOpenGLExtensionManager::New();<br> extensions->SetRenderWindow(renWin);<br> <br> int supports_GL_VERSION_2_0=extensions->ExtensionSupported("GL_VERSION_2_0");<br> <br> <br> if(supports_GL_VERSION_2_0)<br> {<br> extensions->LoadExtension("GL_VERSION_2_0");<br> vertShader = vtkgl::CreateShader(vtkgl::VERTEX_SHADER) ; <br> fragShader = vtkgl::CreateShader(vtkgl::FRAGMENT_SHADER);<br> std::cout << "Ok, Graphic Card supports GL_VERSION_2_0!" << std::endl;<br> }<br> <br> const vtkgl::GLchar* vs = "void main(){ gl_Position = ftransform(); } ";<br>
const vtkgl::GLchar* fs = "void main(){ gl_FragColor = vec4(1.0,0.0,0.0,0.0); }";<br> <br> <br> const char * vv = vs;<br> const char * ff = fs;<br> <br> vtkgl::ShaderSource( vertShader, 1, &vs, NULL );<br> vtkgl::ShaderSource( fragShader, 1, &fs, NULL );<br> <br> vtkgl::CompileShader(vertShader);<br> vtkgl::CompileShader(fragShader);<br> <br> programHandle = static_cast<GLuint>(vtkgl::CreateProgram());<br> vtkgl::AttachShader(programHandle,vertShader);<br> vtkgl::AttachShader(programHandle,fragShader);<br> <br> vtkgl::LinkProgram(programHandle);<br> <br> int maxLength = 1024;<br> vtkgl::GLchar* info = new vtkgl::GLchar[maxLength];<br> GLsizei charsWritten = 0;<br> <br>
vtkgl::GetShaderInfoLog( vertShader, maxLength, &charsWritten, info );<br> <br> if( info )<br> {<br> cout << "Log message: " << (char *)info << endl;<br> }<br> <br> vtkgl::GetShaderInfoLog( fragShader, maxLength, &charsWritten, info );<br> <br> if( info )<br> {<br> cout << "Log message: " << (char *)info << endl;<br> }<br> <br> vtkgl::UseProgram(programHandle);<br> <br> <br> vtkRenderer* ren1 = vtkRenderer::New();<br> renWin->AddRenderer(ren1);<br> vtkRenderWindowInteractor* iren = vtkRenderWindowInteractor::New();<br> iren->SetRenderWindow(renWin);<br> <br> ren1->AddActor(sphereActor);<br> <br>
ren1->SetBackground(0.1,0.2,0.4);<br> renWin->SetSize(300,300);<br> renWin->Render();<br> <br> iren->Initialize();<br> iren->Start();<br> <br> return 0;<br> }<br> <br> <br> <br> <p> 
<hr size=1><a href="http://music.yahoo.com.cn/?source=mail_mailbox_footer" target=blank>
Mp3疯狂搜-新歌热歌高速下
</a>